2015-06-10 2 views
0

У меня есть приложение, в котором пользователю разрешено загружать и загружать документы. В области загрузки пользователь может выбрать несколько файлов (все pdf) и выполнить слияние и загрузить.Отмена или отмена запроса AJAX, не работающего в IE

Отлично.

Существует модальное окно, которое появляется во время слияния процесса , который показывает состояние слияния, с помощью индикатора с использованием SignalR. Это отлично работает во всех браузерах, и загрузка происходит.

Проблема: Существует Отменить Merge и скачать кнопки на этом модальном. Он останавливает узел SignalR и отправляет запрос abort() на вызов AJAX. Это работает в Safari, Chrome и FF, но не в IE.

Когда я смотрю на Fiddler, Chrome останавливает метод на стороне сервера в своих дорожках. В IE он пытается отправить этот запрос в SignalR. Результат в IE заключается в том, что модальное окно уходит, как ожидалось, но через несколько секунд вы получите приглашение загрузить файл (фактическая обработка никогда не останавливается). Обратите внимание на разницу, в которой вызывается прерывание в сеансе Fiddler ниже.

Фидлер (Хром - работы):

Chrome - working

Фидлер (IE - не работает):

IE - not working

J avascript:

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

вызов AJAX, что увольняет, когда Merge и скачать изначально щелкнул является длительным и патентованным, однако, cache: false и crossDomain: true (так как в настоящее время работает локальный хост) устанавливаются как таковые, но проблема по-прежнему сохраняется. Я не думаю, что вызов AJAX настолько уместен, что он очень изолирован от IE, но я могу попробовать и разместить больше, если потребуется.

Я подозреваю это что-то делать с тем фактом, что Chrome и FF используют ServerSentEvents тогда ИЭ с использованием навсегда кадром (SSE не поддерживается).

Я застрял на этом, любая помощь очень ценится.

+0

IE вся версия ?? Проверьте это ** [статья] (http://cypressnorth.com/programming/internet-explorer-aborting-ajax-requests-fixed/) ** и это ** [ответ] (http://stackoverflow.com/a/1394717/2065039) ** и этот ** [вопрос] (http: // stackoverflow.com/questions/1287971/aborting-a-jquery-getjson-xmlhttprequest-updated) ** –

+0

@GuruprasadRao - да, я их видел. Они в основном говорят, чтобы добавить тайм-ауты или отключить кеширование, которое я пробовал. Я получил ошибку с IE11 и IE10, не пробовал ничего ниже. – ragerory

ответ

0

Проблема была связана с тем, что SignalR всегда не выполнял работу с Forever Frame в IE. Добавление ограничения ниже принудительного SignalR для использования Long Polling в IE.

$.connection.hub.start({ transport: ['webSockets', 'serverSentEvents', 'longPolling'] }); 
Смежные вопросы