繁体   English   中英

jQuery.post并不总是发送表单数据

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

这里有更多https://api.jquery.com/jQuery.ajax/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM