更多详情,
我使用一个简单的后Ajax调用(使用Jquery,但也使用编码为url编码的表单的原生XMLhttpRequest。
myPost: function(url,form,doneCallback,failedCallback){
var mypost = new XMLHttpRequest();
mypost.onreadystatechange = function() {
if (mypost.readyState === 4){
doneCallback(mypost);
}
};
mypost.onerror = function() {
failedCallback(mypost);
};
mypost.open('POST',url,true);
mypost.setRequestHeader('Content-Length', result.length);
mypost.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
mypost.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
mypost.setRequestHeader('Connection','close');
mypost.send(form);
},
在这两种情况下,代码适用于Chrome,Safari,Firefox以及IE 11上的获胜8.1或者作为VM VM Fusion上的VM 7,因此在安装了最新win 8.1更新的Mac OSX 10.9.2上运行。但是,只要此代码在本机Windows 8.1版本和具有相同版本的操作系统和IE的IE上运行,无论是否将上述标头属性放入,帖子都会忘记发布后有效负载。
是的,本机win 8.1上的chrome浏览器正确地将有效负载放到服务器上,而本机IE 11没有放出有效负载。基于接收服务器linux的restlet缺少指定资源的有效负载,因此在应用层进一步返回“500”状态。
本机和VM上的IE必须存在一些配置差异。据我所知,这与类似问题描述的不同。
在相同的原生Windows 8.1上BTW有些帖子正在处理已经在网页上创建的表单,而上述表单日期只是填写为。 form ='options ='+ encodeURIComponent(options);知道创建不同行为的地方吗?
谢谢
答案 0 :(得分:0)
mypost.setRequestHeader('Content-Length', result.length);
mypost.setRequestHeader('Connection','close');
这些行只适用于我的FireFox,如果删除这两行,我的代码在IE11中工作。