WP ajaxのドキュメントを何時間も見てきましたが、まだこれを理解できません。私はプラグインに取り組んでいます。これは、ページを更新せずにオプションを更新するためのものです。私は wp-load を介してそれを達成することができましたが、それは悪い習慣であり、正しく実行したいと考えています。
すべての作業が完了したら、javascript を別の .js ファイルに移動します。
すべてのコードが 1 つのページにまとめられています。ajax を介していくつかのオプションを更新しようとしていますが、機能していません。応答は成功したことを示していますが、current_form オプションは更新されていません。どんな助けでも大歓迎です。
コードは次のように更新されました。
wp_enqueue_script( 'AWNT_save_form_data', plugin_dir_url( __FILE__ ) . 'includes/save_form_data.js', array( 'jquery' ) );
wp_localize_script( 'AWNT_save_form_data', 'MyAjax', array(
// URL to wp-admin/admin-ajax.php to process the request
'ajaxurl' => admin_url( 'admin-ajax.php' ),
// generate a nonce with a unique ID "myajax-post-comment-nonce"
// so that you can check it later when an AJAX request is sent
'postCommentNonce' => wp_create_nonce( 'myajax-post-comment-nonce' ),
)
);
add_action('wp_ajax_AWNT_save', 'AWNT_save_callback');
function AWNT_save_callback() {
update_option('current_form', '5');
$nonce = $_POST['postCommentNonce'];
if ( ! wp_verify_nonce( $nonce, 'myajax-post-comment-nonce' ) )
die ( 'Busted!');
update_option('current_form', 'foo');
echo get_option('current_form');
die();
}
JS ファイル (save_form_data.js):
jQuery(document).ready(function($) {
$('#save').click(function() {
var data = {
action: 'AWNT_save',
postCommentNonce : MyAjax.postCommentNonce,
form_name : $('#form_name').val(),
customC: $('#customC').is(":checked"),
no_throttle: $('#no_throttle').is(":checked"),
form_code : $('#form_code').val()};
jQuery.post( MyAjax.ajaxurl, data, function(response) {
alert('Response: ' + response);
});
});
});
スクリプトが追加されています。応答 0 のアラートを参照してください。ただし、update_option が呼び出されていないか、機能していません。current_form は同じままです。