啊,是的,ol\'admin ajax错误400问题。我已经看过了here 和here 和here 为了一个解决方案,这些都没有解决我的问题。所以在这被标记为副本之前,请听我说完。
我的管理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
非常感谢您的帮助。非常感谢。
最合适的回答,由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