管理-登录时出现AJAX触发错误400

时间:2021-05-15 作者:Kenton de Jong

啊,是的,ol\'admin ajax错误400问题。我已经看过了hereherehere 为了一个解决方案,这些都没有解决我的问题。所以在这被标记为副本之前,请听我说完。

我的管理ajax链接如下所示:

<script type="text/javascript">
   var ajaxurl = "https://full-url.com/wp-admin/admin-ajax.php";
</script>
我的AJAX调用如下所示:

var data = {
    action: \'get_events\'
};

jQuery.ajax({
  url: ajaxurl,
  data: data,
  type: \'POST\',
  success: function(data){ 
    console.log(data);
  },
  error: function(xhr, ajaxOptions, thrownError) {
    console.log(xhr);
    console.log(xhr.status);
    console.log(thrownError);
  }
});
在我的职能范围内。php,我有以下内容:

add_action(\'get_events\', \'get_events_func\');
add_action(\'wp_ajax_nopriv_get_events\', \'get_events_func\');

function get_events_func() {

    echo \'please work\';
    exit(); 
    
}
当我注销网站时,这项工作非常好,但一旦我登录,它就会抛出一个错误400。是我设置的吗wp_ajax_nopriv_ 钩子错了?这是我唯一能想到的。

我得到的错误响应很简单:

XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, abort: ƒ, onreadystatechange: ƒ, …}
abort: ƒ ()
onabort: null
onerror: null
onload: null
onloadend: null
onloadstart: null
onprogress: null
onreadystatechange: ƒ ()
ontimeout: null
readyState: 4
response: "0"
responseText: "0"
responseType: ""
responseURL: "https://full-url.com/wp-admin/admin-ajax.php"
responseXML: null
status: 400
statusText: ""
timeout: 0
upload: XMLHttpRequestUpload {onloadstart: null, onprogress: null, onabort: null, onerror: null, onload: null, …}
withCredentials: false
__proto__: XMLHttpRequest

400

undefined
非常感谢您的帮助。非常感谢。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

是我设置的吗wp_ajax_nopriv_ 钩子错了?

不,你没有。但该挂钩仅适用于已注销或未注册的用户。

对于已登录的用户,挂钩是wp_ajax_<action>.

所以你只需要改变add_action(\'get_events\' 在您的代码中add_action(\'wp_ajax_get_events\', 错误400将消失:

add_action(\'wp_ajax_get_events\', \'get_events_func\');        // for logged-in users
add_action(\'wp_ajax_nopriv_get_events\', \'get_events_func\'); // for logged-out users