jQuery $ .ajax POST请求与IE 9结果为空数组

时间:2013-09-03 16:21:00

标签: php javascript jquery ajax internet-explorer

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

我想使用表单输入的值作为POST变量通过AJAX加载PHP页面。 前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的错误,是否有可用的解决方法?

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

****** **** EDIT

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

Why does Internet Explorer not send HTTP post body on Ajax call after failure?

IE进入保持活动状态,不再在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 个答案:

答案 0 :(得分:1)

  1. 请更改您的Jquery版本。 当我使用jquery.js版本1.10时,我在IE9中也遇到了同样的问题。 当试用版本1.8时,问题就解决了。
    1. 您只需在代码中添加此行即可 $ .support.cors = true;
    2. 3.您可以添加jquery migrate js文件来解决此问题。 http://code.jquery.com/jquery-migrate-1.2.1.js