javascript - Internet Explorer 9 和 ForeverFrames 的 Signalr 轮询问题

标签 javascript jquery ajax signalr internet-explorer-9

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

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

AJAX post 请求将调用发送到服务器以通过 Controller 启动流程,最后返回一个部分 View ,并用该结果填充容器元素。

$("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);
    }
});

出于法律原因,我无法显示 Controller ActionResult 方法,但我 100% 确定问题出在上面的代码中。我只是想不通为什么。

我在 Chrome、Firefox、IE10、11 和 edge 中测试过一切正常(大概是因为他们使用 websockets),但在使用 ForeverFrames 的 IE9 上,该过程停滞不前。

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

这是网络跟踪的输出。

enter image description here

请原谅被涂黑的条目,尽量不传播代码。

如您所见,我已经突出显示了请求只是停顿的地方,据我所知,因此不会返回部分 View 。

有人遇到过这个吗?

最佳答案

你可以尝试添加

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

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

关于javascript - Internet Explorer 9 和 ForeverFrames 的 Signalr 轮询问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37305383/

相关文章:

javascript - 如何将 JSON 转换为数组并在 jQuery 中对其进行循环?

javascript - 如何在文本选择中获取所有 <img> 标签?

javascript - 使用ajax获取的按钮没有响应

javascript - 使用 onsubmit 事件获取查询字符串

javascript - 如何在 Polymer 中设置后备图像

javascript - 如何让 React js 远离全局范围

javascript - 如何在点击事件上更新 HTML 元素?

javascript - Redux 形式 - 将函数作为属性传递给字段数组给出 undefined

jquery - 根据窗口高度调整div高度

javascript - 为什么 AJAX 成功调用中的代码不起作用?