jQuery Ajax导致IE11中的0字节发布

时间:2014-04-24 15:48:33

标签: jquery internet-explorer-11

我正在开发一个广泛使用jQuery AJAX的Web应用程序。我遇到的问题是IE 11没有将数据提交给服务器(0字节的帖子)。

我已经制作了这个简单的jsfiddle来重现问题:http://jsfiddle.net/CZGEH/6/

$("#ajax").click(function () {
    var d = {
        a: 1
    };
    alert("before: " + d.a);
    var json = JSON.stringify(d);  
    $.post("/echo/json/", { json: json}, 
           function (r) {
               alert("after: " + r.a);
           }
          );
});

它在Chrome和Firefox上工作正常,显示前后的值,但在IE11中,请求正文为空,当然没有任何内容从echo返回,因为没有发送任何内容。我已经使用IE F12 Developer工具的网络面板验证了POST是空的。

更新:小提琴捕捉

Key Value
Request POST /echo/json/ HTTP/1.1
Accept  */*
Content-Type    application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With    XMLHttpRequest
Referer http://jsfiddle.net/CZGEH/6/show/
Accept-Encoding gzip, deflate
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Host    jsfiddle.net
Content-Length  0
Connection  Keep-Alive
Cache-Control   no-cache
Cookie  __utma=210580238.1033480112.1361288166.1398353560.1398356067.4;             __utmz=210580238.1398353560.3.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); csrftoken=bknsZsUQNq1vkwRg0jUjYUJajySxummK

更新:       这是“Google Gears Helper”添加启用,打破了脚本。该脚本没有使用插件,实际上非常简单。我仍然不知道为什么它会破坏,但禁用添加会消除问题。标记为答案,谢谢Erick !!

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:2)

使用当前版本的IE11对所有更新进行测试,消息框显示两次,HTTP表单将POST到服务器。正如Fiddler所见:

  POST http://fiddle.jshell.net/echo/json/ HTTP/1.1
  Accept: */*
  Content-Type: application/x-www-form-urlencoded; charset=UTF-8
  X-Requested-With: XMLHttpRequest
  Referer: http://fiddle.jshell.net/CZGEH/6/show/
  Accept-Language: en-US,en;q=0.5
  Accept-Encoding: gzip, deflate
  User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
  Host: fiddle.jshell.net
  Content-Length: 22
  Connection: Keep-Alive
  Pragma: no-cache

  json=%7B%22a%22%3A1%7D

请确认您可以在浏览器的无加载项模式中重现此问题,并确认您没有任何第三方“下载管理器”插件或其他扩展程序(如Google Gears)安装了IE的网络堆栈。

使用未记录的方法来扩展IE的网络堆栈的扩展已知存在导致0字节POST的错误。