以前にwordpressでajaxを使用したことがなく、youtubeのビデオチュートリアルに従って簡単なajaxリクエストを作成しようとしていますが、常に次のエラーメッセージが返されます。ステータス400(不良リクエスト)
私のjavascript(自分のテンプレートファイル内):
jQuery.ajax({
url: ajaxurl,
type: "POST",
dataType: 'json',
data: {
action: 'my_action'
},
success: function ( response ) {
console.log("success");
alert("success");
},
error: function( error ){
console.log("error");
alert("error");
}
});
functions.phpファイル:
<?php
add_action('wp_ajax_my_action', 'insertEmail');
add_action('wp_ajax_nopriv_my_action', 'insertEmail');
function insertEmail(){
echo "<script> alert('functions fil'); </script>"
die();
}
?>
WordpressでAJAXの送信に使用する基本スニペットを以下に示します。
<?php
if (isset($_POST['my_theme_ajax_submit']))
if ( wp_verify_nonce( $_POST['nonce'], 'my_theme_ajax_submit' ) )
my_theme_ajax_submit();
function my_theme_ajax_submit() {
// do something
// some php code that fires from AJAX click of #fire
wp_mail( '[email protected]', 'my_theme_ajax_submit() fired', time());
wp_die();
}
?>
<button id='fire'>Fire Something</button>
<script>
jQuery('#fire').click(function(){
jQuery.ajax({
type: 'post',
data: {
"my_theme_ajax_submit": "now",
"nonce" : "<?php echo wp_create_nonce( 'my_theme_ajax_submit' ); ?>"
},
success: function(response) {
jQuery('#fire').text("Somthing Done!");
},
error: function(response) {
jQuery('#fire').text("...error!");
},
});
});
</script>
これはより適切に構築することができます-スクリプトを wp_enque_script()
に格納し、my_theme_ajax_submit()
条件チェック/ init
(テンプレート内ではなく)のような初期フックで起動するか、適切な wp_ajax_(action)
フック(私には役に立たないようですが)-しかし、それはアイデアを与えるはずです。