Jquery 为什么我的$.post()不工作,而$.ajax()工作?
我正在构建一个非常简单的函数,它通过AJAX向服务器发送一个整数。我过去一直是这样做的,但突然间我遇到了jQuery.post方法的问题 以下操作不起作用:Jquery 为什么我的$.post()不工作,而$.ajax()工作?,jquery,ajax,Jquery,Ajax,我正在构建一个非常简单的函数,它通过AJAX向服务器发送一个整数。我过去一直是这样做的,但突然间我遇到了jQuery.post方法的问题 以下操作不起作用: jQuery.post({ dataType : 'json', url : server_vars.ajax_url, data : { action : 'toggle_book', _ajax_nonce : server_vars.nonce, book_id
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错误:
职位
但是,如果我将代码切换到以下位置,它将起作用:
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方法是否遭到了反对,而事实似乎并非如此
我已经做了一百万次了,突然间它开始给我这个问题,我感到困惑
这是在WordPress5.5上运行的
有什么想法吗?在您发布的url中的
[object%20Object]
中,它似乎试图将对象转换为字符串
这可能意味着您使用的是1.12之前的jQuery版本,该版本不支持只传递选项对象
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');
}
}
});
如果您看到的签名(对于v1.12之前的版本),您将看到url是第一个参数,并且不在options对象中
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');
}
}
});
@罗里姆克罗桑oups@RoryMcCrossan是的,不用担心。更新的答案。我一定是疯了,我可以发誓我这么做已经很多年了。@Gazillion,可能是你的其他网站使用了更现代的jQuery版本。1.0非常古老。支持原始语法的v1.12于2016年发布。jQuery的哪个版本?在1.12之前,$.post的签名不存在。无法复制:。如果您检查控制台的网络选项卡,您将看到
数据
按原样编码到请求体中。