为什么IE11无法发送帖子表格?

时间:2014-03-13 05:50:13

标签: javascript ajax internet-explorer

更多详情,

我使用一个简单的后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);

知道创建不同行为的地方吗?

谢谢

1 个答案:

答案 0 :(得分:0)

mypost.setRequestHeader('Content-Length', result.length);
mypost.setRequestHeader('Connection','close');

这些行只适用于我的FireFox,如果删除这两行,我的代码在IE11中工作。