[英]jQuery.post not always sending form data
我正在使用jQuery Post函数,例如:
var fooVar = true;
var barVar = 1;
var bazVar = "baz";
$.post("url",
{
foo: fooVar,
bar: barVar,
baz: bazVar
},
function(){
alert("success");
}
);
在我的日志中,我看到一个间歇性的问题,即在没有任何表单参数的情况下发出"url"
请求,而我只有一个函数调用它。
是否有一种情况可以触发POST请求,而不发送jQuery Post中指定的表单参数?
我希望看到:
富=真巴= 1&巴兹=巴兹
但是根本没有表格参数:
更新:这个问题似乎主要是在Internet Explorer浏览器(IE7-IE11)上查看统计数据,但它不是IE独有的(Chrome,Firefox也有问题)。
当参数值undefined
时,jQuery Post可以发送没有表单参数的请求。
例如,如果我们有以下内容:
var fooVar = undefined;
var barVar = 1;
var bazVar = "baz";
$.post("url",
{
foo: fooVar,
bar: barVar,
baz: bazVar
},
function(){
alert("success");
}
);
然后发布的表单参数将是:
栏= 1&巴兹=巴兹
现在这并没有解决我的实际问题(从我能说的正确条件已经到位,只有在所有变量都有值的情况下才能调用),但它确实回答了我的问题。
听起来像浏览器版本特定的问题,尝试在本地使用不同版本的IE重现它。 它可能是代码中的一个拼写错误,由某些版本的IE优雅地处理而不是其他版本(如数组中的尾随逗号) - 在JavaScript代码上运行JSLint / JSHint。 我能想到的另一种情况是CORS预检OPTIONS请求 - 它没有正文。 您确定没有执行CORS请求吗? 您的Ajax URL是否与原点匹配?
而不是使用$.post
简写,而是尝试使用$.ajax
; 不确定这是否会解决它,但尝试它肯定不会有害。
另外,您可以减少一个功能调用。 微优化了!
$.ajax({
type: "POST",
url: "url",
data: { foo: bar }
});
$.post
是使用$.ajax
进行POST请求的$.ajax
方法,因此使用这两者之间没有太大区别。 也许问题出在代码中的其他地方,而不是在jquery或浏览器中。
但尝试$.ajax
。 如果您需要比ajax请求更深入的配置,通常更好。 它应该工作
例如
$.ajax({
type: "POST",
url: "test_url",
data: { name: "John", location: "Boston" },
success: function(response) {
alert('success !');
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.