带有IE9的jQuery$.ajaxPOST请求结果为空数组

jQuery $.ajax POST Request with IE 9 results empty array

本文关键字:结果 数组 请求 ajaxPOST IE9 jQuery 带有      更新时间:2023-09-26

我的编码有问题,所以在Firefox中它工作得很好,但在IE9中它只工作前~5秒。在那之后,我再也没有收到任何POST数据了。

我想通过AJAX加载一个PHP页面,使用表单输入的值作为POST变量。前5秒我可以在请求的页面上接收POST,但之后我只收到一个空字符串。

这是我的代码:

function reload_form(){
var data = $("#formularfelder").serialize()
    $.ajax({
        type: 'POST',
        url: 'content/formular.php',
        data: data,
        success: function(msg) {
             $("#form_container").html(msg);
        }
    });
}

这是IE9的一个错误吗?有没有可用的解决方法?

如果你能帮助我,那就太棒了!:)

******编辑***

我在这篇文章中找到了这个问题的原因:

为什么Internet Explorer在失败后不在Ajax调用上发送HTTP帖子正文?

IE遇到一个保持活动的timout,并且不再在POST数据中发送正文。

为了解决这个问题,我以规则的时间间隔(等于保持活动超时)向服务器发送一个数据包,以保持活动。这将导致一点流量(每次刷新约200字节),但这仍然是一个比在Apache中禁用keep-alive更可行的解决方案。

这是我为这个问题找到的唯一解决方案

对于有同样问题的人,这里有我的刷新代码,用于5秒的保持活动超时:

var updateDiv = function ()
{
    $.ajax({type: 'POST', url: 'timeout.php'});
    yourTimer = window.setTimeout(updateDiv, 5000);
}
$( document ).ready(function() {
    var yourTimer = window.setTimeout(updateDiv, 5000);
});
  1. 请更改您的Jquery版本。当我使用jquery.js 1.10版本时,我在IE9中也遇到了同样的问题。在1.8版本中试用时,问题得到了解决

  1. 您可以简单地在代码中添加这一行$.support.cors=true

3.您可以添加jquery migrate js文件来解决此问题。http://code.jquery.com/jquery-migrate-1.2.1.js