我正在开发一个广泛使用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 !!
有什么建议吗?感谢。
答案 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的错误。