Internet Explorer (только) прерывает сообщения AJAX с перерывами - программирование

Internet Explorer (только) прерывает сообщения AJAX с перерывами

В течение недели вытягивая мои волосы.

Использование:

JQuery 1.9.1

Плагин malsup формы, аналогичный примеру JSON: http://malsup.com/jquery/form/#json

<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE9" /> with of without same error

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Internet explorer (8/9/10) будет случайным образом отменять запросы AJAX POST (очень случайным образом)

Отменяя, я имею в виду, НИЧЕГО не отправляется поверх http "вообще" - он просто прерывается, а затем накладывает на меня слезы.

F12 Инструменты разработчика в сети читаются:

URL-адрес моего URL-адреса, который является правильным

Результат (Прервано) он буквально читает (Прервано)

Введите пробел - буквально ничего здесь

Получено 0B

Взято 202 мс

Инициатор (Pending) буквально читает (Pending)

Открытие захвата запроса:

Заголовок запроса пуст

Тело запроса пусто.

eveything пуст

Однако на вкладке Timings, я замечаю, что он говорит в порядке Подождите Начало Начало разрыв DOMContentLoaded (событие) Загрузка (событие)

Должно ли начать быть там дважды? или я как-то отправляю запрос дважды, и это является причиной отмены.

Я скажу, что успешные POSTS имеют Начать дважды под вкладкой таймингов.

Я также допускаю ошибки console.log и получаю:

xmlhttprequest.ReadyState 4

xmlhttprequest.Status: 12019

Это, когда я нажимаю кнопку "Отправить" во второй раз, работает. Клиентам это не понравится...

$('#formId').ajaxForm( {
    dataType :  'json',
    cache:      false,
    beforeSend: beforeGenericPostForm,
    success :   FormResponse,
    error:      genericError
});

$('#formSubmitId').click(function(e){
    e.preventDefault();

    //perform some custom simple form validation - return false if problem

    $('#formId').submit();
});

Итак, genericError вызывается и дает мне сообщения об ошибках выше.

Я могу console.log до конца beforeSend: beforeGenericPostForm, функция, затем он умирает/прерывается.

Это то, что я искал уже давно, и не могу найти решение.

Моя форма является стандартной формой HTML, и я отправляю приложение /x -www-form-urlencoded и получаю JSON с сервера с помощью заголовков application/json; кодировка = UTF-8

Есть ли какие-либо подсказки или подобные проблемы?

Или это просто стандартная ошибка, как указано ниже, и если да, то как вы ее обходите?

http://bugs.jquery.com/ticket/9352

Огромное спасибо, если у вас есть какие-то советы, начиная с летнего развития, из-за этого сейчас.

4b9b3361

Ответ 1

Раньше у меня была похожая проблема, и до сих пор я обнаружил проблему тайм-аута в Internet Explorer. В своем коде я определил следующий обработчик как пустой

xdr.onprogress = function () { };
xdr.ontimeout = function () { };
xdr.onerror = function () { }; 

и обернул функцию отправки в объявлении тайм-аута

setTimeout(function () {
     xdr.send();
 }, 0);

это решило мою проблему. Надеюсь это поможет

Ответ 2

У меня была такая же проблема, когда IE 8 и 11 работали нормально, но IE 9 и 10 не были. Я также использовал запросы xdomain для IE 10 и ниже, поскольку у него были проблемы с азаксом для перекрестных доменов для более ранних браузеров,

Я нашел это:

http://cypressnorth.com/programming/internet-explorer-aborting-ajax-requests-fixed/

if ($.browser.msie && window.XDomainRequest) {
// Use Microsoft XDR
var xdr = new XDomainRequest();
xdr.open("get", "someurl");
xdr.onload = function () {
var JSON = $.parseJSON(xdr.responseText);
if (JSON == null || typeof (JSON) == 'undefined')
{
    JSON = $.parseJSON(data.firstChild.textContent);
}
processData(JSON);
};
xdr.onprogress = function(){ };
xdr.ontimeout = function(){ };
xdr.onerror = function () { };
setTimeout(function(){
    xdr.send();
}, 0);
}

Затем сделайте else и сделайте с jQuery для современных, достойных браузеров.

Ответ 3

вы не одиноки. Недавно я столкнулся с аналогичной проблемой в IE11. Мой сценарий похож, есть два вызова ajax, которые происходят из веб-формы, один заполняет данные в разделе страницы, тогда как другой - это тег html5 с атрибутом src, указывающим на тот же домен. Оба этих запроса показывают, что они ожидаются. Кажется, они оба заперты. (возможно, друг друга?) Теперь, когда пользователь предпринимает действие на странице, которая запускает другой вызов ajax, например, перемещение от страницы, страница замерзает. Чтобы устранить эту проблему, ввел "автозапуск" в тег видео (это, казалось, освободило и помогло выполнить как предыдущие запросы ajax), так и страница ведет себя нормально после этого. Другие браузеры (chrome/firefox) работают очень хорошо без этого взлома автозапуска. Это мало озадачивает, потому что есть другие страницы, которые имеют одинаковый набор вызовов ajax, но только одна из этих страниц зависает. Я не мог понять идеальную комбинацию этих параметров, чтобы это произошло. Я также думаю, что это не связано с jquery, потому что работают другие браузеры.

Ответ 4

Попробуйте использовать параметр type при вызове ajax.

$('#formId').ajaxForm( {
    type :  'POST',
    dataType :  'json',
    cache:      false,
    beforeSend: beforeGenericPostForm,
    success :   FormResponse,
    error:      genericError
});

Ответ 5

попробуйте удалить KB2962872. Это решило мою проблему в peopleoft90/tools8.52 добрые пожелания