Javascript 中止/取消不在IE中工作的AJAX请求

Javascript 中止/取消不在IE中工作的AJAX请求,javascript,jquery,ajax,asp.net-mvc,signalr,Javascript,Jquery,Ajax,Asp.net Mvc,Signalr,我有一个允许用户上传和下载文档的应用程序。在下载区域,用户可以选择多个文件(全部pdf),并进行合并和下载 太好了 在合并过程中会弹出一个模式窗口,显示合并的状态,并使用信号器显示进度条。这在所有浏览器中都可以正常工作,并且可以进行下载 问题:此模式上有一个取消合并和下载按钮。它停止信号集线器,并向AJAX调用发送一个abort()请求。这适用于Safari、Chrome和FF,但不适用于IE 当我看Fiddler时,Chrome会停止服务器端方法的运行。在IE中,它尝试将该请求发送给信号器。I

我有一个允许用户上传和下载文档的应用程序。在下载区域,用户可以选择多个文件(全部pdf),并进行合并和下载

太好了

合并过程中会弹出一个模式窗口,显示合并的状态,并使用信号器显示进度条。这在所有浏览器中都可以正常工作,并且可以进行下载

问题:此模式上有一个取消合并和下载按钮。它停止信号集线器,并向AJAX调用发送一个
abort()
请求。这适用于Safari、Chrome和FF,但不适用于IE

当我看Fiddler时,Chrome会停止服务器端方法的运行。在IE中,它尝试将该请求发送给信号器。IE中的结果是模式窗口按预期消失,但几秒钟后,您收到文件已下载的提示(实际处理从未停止)。请注意在下面的Fiddler会话中调用中止的不同之处

小提琴手(镀铬):

$('#cancelDownloadMerge').on('click', function () {
    $.connection.hub.stop();
    XX.Documents.DocumentsView.download.abort();
    XX.Documents.DocumentsView.mergeCancelled = true;
    XX.Documents.DocumentsView._isMerging = false;
});

小提琴手(即:不工作):

$('#cancelDownloadMerge').on('click', function () {
    $.connection.hub.stop();
    XX.Documents.DocumentsView.download.abort();
    XX.Documents.DocumentsView.mergeCancelled = true;
    XX.Documents.DocumentsView._isMerging = false;
});

Javascript:

$('#cancelDownloadMerge').on('click', function () {
    $.connection.hub.stop();
    XX.Documents.DocumentsView.download.abort();
    XX.Documents.DocumentsView.mergeCancelled = true;
    XX.Documents.DocumentsView._isMerging = false;
});
最初单击“合并并下载”(Merge And Download)时触发的AJAX调用冗长且专有,但是,
cache:false
crossDomain:true
(因为当前运行的是localhost)设置为这样,但问题仍然存在。我不认为AJAX调用与IE有多大关系,因为这与IE是非常孤立的,但是如果需要,我可以尝试发布更多

我怀疑这与Chrome和FF使用ServerSentEvents有关,而IE使用的是forever frame(不支持SSE)


我被这一点难住了,非常感谢您的帮助。

问题是因为Signal始终默认在IE中使用永久帧。添加以下限制迫使Signal在IE中使用长轮询

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

IE所有版本??检查这个,这个,还有这个@GuruprasadRao-是的,我见过那些。他们基本上说要添加超时或禁用缓存,我已经尝试过了。我已经得到了IE11和IE10的错误,没有尝试任何更低的。