2

我的编码有问题,所以在 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 的错误吗?是否有可用的解决方法?

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

******编辑****

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

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

IE 遇到保持活动超时并且不再在 POST 数据中发送正文。

为了解决这个问题,我以固定的时间间隔(等于保持活动超时)向服务器发送一个数据包以保持保持活动状态。这将导致一点流量(每次刷新约 200 字节),但它仍然是一个更实用的解决方法,然后禁用 Apache 中的保持活动。

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

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

var updateDiv = function ()
{
    $.ajax({type: 'POST', url: 'timeout.php'});
    yourTimer = window.setTimeout(updateDiv, 5000);
}

$( document ).ready(function() {
    var yourTimer = window.setTimeout(updateDiv, 5000);
});
4

1 回答 1

1
  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

于 2015-03-17T11:38:41.570 回答