Internet Explorer 9和ForeverFrames

时间:2016-05-18 16:33:28

标签: javascript jquery ajax signalr internet-explorer-9

我使用Signalr显示服务器上发生的长进程的实时更新。

这个想法是用户可以看到已经处理了一定数量的项目。

AJAX post请求将调用发送到服务器以通过控制器启动进程,在此结束时返回部分视图并使用此结果填充容器元素。

$("body").on("click", "#process-button", function ()
{
    var hub = $.connection.myHub;

    $.connection.hub.start().done(function ()
    {
        connectionId = $.connection.hub.id;

        $.ajax({
            type: "POST",
            url: "StartProcess/MyController"+ "&connectionId=" + connectionId,
            cache: false,
            success: function (data) {
                $(".modal #container").empty();
                $(".modal #container").html(data);
            }
        })
    });


    hub.client.sendMessage = function (message) {
        $(".modal #container").empty();
        $(".modal #container").append(message);
    }
});

由于法律原因,我无法显示控制器ActionResult方法,但我100%确定问题出在上面的代码中。我只是想弄清楚原因。

我已经在Chrome,Firefox,IE10,11中测试了这一点并且边缘都很好(可能是因为他们使用的是websockets)但是在使用ForeverFrames的IE9上,这个过程正在停滞。

值得注意的是,我通过IE11使用文档模式模拟器测试了IE9。

以下是网络跟踪的输出。

enter image description here

请原谅黑名单,不要广播代码。

正如你所知,我突出显示了请求只是拖延的地方,据我所知,部分视图因此没有返回。

之前有人遇到过这个吗?

1 个答案:

答案 0 :(得分:1)

您可以尝试添加

$.connection.hub.start({ transport: ['webSockets', 'serverSentEvents', 'longPolling'] });

在您的脚本中禁止使用ForeverFrame。