Javascript 中止/取消不在IE中工作的AJAX请求
我有一个允许用户上传和下载文档的应用程序。在下载区域,用户可以选择多个文件(全部pdf),并进行合并和下载 太好了 在合并过程中会弹出一个模式窗口,显示合并的状态,并使用信号器显示进度条。这在所有浏览器中都可以正常工作,并且可以进行下载 问题:此模式上有一个取消合并和下载按钮。它停止信号集线器,并向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
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的错误,没有尝试任何更低的。