wordpress admin-ajax.phpファイルの奇妙でイライラする動作があります。ajaxリクエストを行うと、404エラーの悪いリクエストが返されます。
(function( $ ) {
var ajaxscript = { ajax_url : 'mydomain.com/wp-admin/admin-ajax.php' }
$.ajax({
url : ajaxscript.ajax_url,
data : {
action : 'cart_clb',
id : 1
},
method : 'POST',
success : function( response ){ console.log(response) },
error : function(error){ console.log(error) }
})
})(jQuery)
そして、私のfunctions.php内
add_action( 'wp_ajax_post_cart_clb', 'cart_clb' );
add_action( 'wp_ajax_nopriv_post_cart_clb', 'cart_clb' );
function cart_clb(){
echo json_encode($_POST);
die();
}
上記のように、リクエストを実行すると:
mydomain.com/wp-admin/admin-ajax.php 400 (Bad Request)
{readyState: 4, getResponseHeader: ƒ, getAllResponseHeaders: ƒ, setRequestHeader: ƒ, overrideMimeType: ƒ, …}
誰かが私を喜ばせるのを手伝ってくれる?ありがとうございました。
まず、プロトコル(または少なくともプロトコルに依存しない形式)で、完全なURLと絶対URLを使用します。
var ajaxscript = { ajax_url : '//mydomain.com/wp-admin/admin-ajax.php' }
次に、ajaxアクション名はphpコールバック関数名ではなく、フックの動的部分wp_ajax_{action_name} / wp_ajax_nopriv_{action_name}
ので、あなたの場合は次のようになります。
data : {
action : 'post_cart_clb',
id : 1
},
私はあなたのコードを修正し、これを見ています:
(function( $ ) {
var ajaxscript = { ajax_url : 'mydomain.com/wp-admin/admin-ajax.php' }
$.ajax({
url : ajaxscript.ajax_url,
data : {
action : 'post_cart_clb',
id : 1
},
method : 'POST', //Post method
success : function( response ){ console.log(response) },
error : function(error){ console.log(error) }
})
})(jQuery)
これはWordPress ajax:wp_ajax_ {Your_action_name} wp_ajax_nopriv_ {Your_action_name}の構文です