Javascript jQuery.post不总是发送表单数据
我正在使用jQuery Post函数,例如:Javascript jQuery.post不总是发送表单数据,javascript,jquery,post,http-post,jquery-post,Javascript,Jquery,Post,Http Post,Jquery Post,我正在使用jQuery Post函数,例如: var fooVar = true; var barVar = 1; var bazVar = "baz"; $.post("url", { foo: fooVar, bar: barVar, baz: bazVar }, function(){ alert("success"); } ); 在我的日志中,我看到了一个间歇性的问题,即对“url”的请求没有任何表单参
var fooVar = true;
var barVar = 1;
var bazVar = "baz";
$.post("url",
{
foo: fooVar,
bar: barVar,
baz: bazVar
},
function(){
alert("success");
}
);
在我的日志中,我看到了一个间歇性的问题,即对“url”
的请求没有任何表单参数,我只有一个调用它的函数
是否有过这样一种情况,即在不发送jQuery POST中指定的表单参数的情况下可以触发POST请求?
我希望看到: foo=true&bar=1&baz=baz 但是,根本没有任何形式参数:
更新:从统计数据来看,这个问题似乎主要出现在Internet Explorer浏览器(IE7-IE11)上,但它不是IE独有的(Chrome、Firefox也有问题)。当参数值
未定义时,jQuery Post可以发送不带表单参数的请求
例如,如果我们有以下内容:
var fooVar = undefined;
var barVar = 1;
var bazVar = "baz";
$.post("url",
{
foo: fooVar,
bar: barVar,
baz: bazVar
},
function(){
alert("success");
}
);
然后,发布的表单参数将为:
bar=1&baz=baz
现在这并不能解决我的实际问题(据我所知,已经设置了正确的条件,仅在所有变量都有值的情况下进行调用),但它确实回答了我的问题。不要使用$。post
速记,试着使用$。ajax
;不确定这是否能解决问题,但尝试一下肯定不会有什么坏处
另外,您还可以少担心一个函数调用。微优化ftw
$.ajax({
type: "POST",
url: "url",
data: { foo: bar }
});
听起来像是浏览器版本特定的问题,请尝试使用不同版本的IE在本地复制它。这可能是某些版本的IE优雅地处理了代码中的一个输入错误,而其他版本(如数组中的尾随逗号)-在JavaScript代码上运行JSLint/JSHint。我能想到的另一个场景是CORS飞行前选项请求——没有身体。您确定没有执行CORS请求吗?您的Ajax URL是否与源代码匹配?$。post
是使用$的一种简写方式。Ajax
用于post请求,因此使用两者之间没有太大区别。可能问题出在代码的其他地方,而不是jquery或浏览器中
但是试试$.ajax
。如果您需要对ajax请求进行更深入的配置,通常最好使用它。应该行得通
e、 g
这里有更多信息标题是否有表单且值为空,或者它甚至不在请求中?@drowness它甚至不在请求中!标头上没有任何表单参数。@ADAD.TJ这不是服务器端问题。我正在查看存储在服务器上的请求日志,并且没有表单参数。这个问题也是间歇性的。当你说这个问题是“间歇性的”时,你的意思是它有时有效,而其他的则无效?这有什么规律吗?可能是不同的客户端浏览器,或者其他什么?这可能是某种破坏)每个用户都可以向您发送不同的查询,甚至可以编辑您的js代码。。你应该试着自己重复这种行为
$.ajax({
type: "POST",
url: "test_url",
data: { name: "John", location: "Boston" },
success: function(response) {
alert('success !');
}
});