Wordpress admin-ajax.php 400 不正なリクエスト 質問する

Wordpress admin-ajax.php 400 不正なリクエスト 質問する

wordpress admin-ajax.php ファイルに奇妙でイライラする動作があり、ajax リクエストを行うと 400 エラー「不正なリクエスト」が返されます。

(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: ƒ, …}

誰か私を助けてくれませんか? よろしくお願いします。

ベストアンサー1

まず、プロトコル(または少なくともプロトコルに依存しない形式)を使用して、完全な絶対 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
},

おすすめ記事