我正在构建一个非常简单的函数,通过AJAX向服务器发送一个整数。我以前总是这样做,但突然间我遇到了jQuery.post方法的问题。
以下不起作用:
jQuery.post({
dataType : 'json',
url : server_vars.ajax_url,
data : {
action : 'toggle_book',
_ajax_nonce : server_vars.nonce,
book_id : book_id
},
success : function( response ) {
if( response.success ) {
alert('done');
}
else {
alert('error');
}
}
});
我得到以下404错误:
POSThttp://example.com/[object%20Object]
但是,如果我将代码切换到以下内容,它就会工作:
jQuery.ajax({
method : 'post',
dataType : 'json',
url : server_vars.ajax_url,
data : {
action : 'toggle_book',
_ajax_nonce : server_vars.nonce,
book_id : book_id
},
success : function( response ) {
if( response.success ) {
alert('done');
}
else {
alert('error');
}
}
});
我的server_vars变量没有错,它只是一个json对象,我可以在其他任何地方访问(包括上面的"固定"代码(。我在谷歌上搜索了一下post方法是否被弃用,但事实似乎并非如此。
我已经做了一百万次了,突然间,它开始给我带来这个问题,我觉得很困惑。
这是在WordPress 5.5 上运行的
有什么想法吗?
从您发布的url中的[object%20Object]
,它似乎试图将对象转换为字符串。
这可能意味着您使用的是1.12之前的jQuery版本,该版本不支持只传递选项对象。
如果您看到jQuery.post
的签名(适用于v1.12(,您将看到url是第一个参数,并且不会进入选项对象。
jQuery.post(server_vars.ajax_url, {
dataType : 'json',
data : {
action : 'toggle_book',
_ajax_nonce : server_vars.nonce,
book_id : book_id
},
success : function( response ) {
if( response.success ) {
alert('done');
}
else {
alert('error');
}
}
});