Javascript 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”的请求没有任何表单参

我正在使用jQuery Post函数,例如:

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 !');
  }
});