Подтвердить что ты не робот

Странная ошибка AJAX с IE 11

В настоящее время я работаю над веб-приложением, основанным исключительно на HTML и JavaScript, которое использует CORS для использования удаленного веб-сервиса, но в настоящее время имеет проблемы с IE 11, делающим запрос GET. Самое забавное, что мы отлично работаем в IE8/9/10, а не 11.

Проблема в том, что IE 11 имеет тайм-аут и не ждет ответа от сервера. Вызов ajax просто:

$.ajax(url, {
    dataType: 'json',
    complete: complete,
    type: 'GET',
    global: true,
    success: success,
    crossDomain: true,
    xhrFields: {
        withCredentials: true
    }
});

На вкладке "Сеть" и использовании Fiddler я вижу, что IE даже не отправляет запрос.

Есть ли у кого-нибудь идеи?

EDIT: Я забыл упомянуть, что я уже пробовал кеш: false. Я также нашел что-то очень странное в том, что если я переключу режим документа в dev-инструментах с Edge на 9, то снова вызов работает каждый раз, даже после того, как я очистил IE и перезапустил его, будь то кеш true или false. Очень странно.:\

4b9b3361

Ответ 1

IE славится кешированием. Убедитесь, что вы не получаете кешированный ответ. Вы можете установить значение свойства cache в false или добавить уникальную метку времени в URL-адрес, чтобы он не был кешированным ответом. Вы можете использовать метод $.now(), чтобы получить уникальную метку времени.

Настройка свойства кэша

$.ajax(url, {
    dataType: 'json',
    cache : false,
    //Other things ...
}

Добавление уникальной метки времени в URL

var url="somePage.php?"+$.now();
//Use this url now for making the ajax call

Метод $.now() является сокращением числа, возвращаемого выражением (new Date).getTime()

Ответ 2

Я не уверен, возможно, это кеширование, попробуйте установить свойство "cache: false"

В противном случае вы также можете попробовать добавить дату-время в конце своего URL-адреса, поэтому каждый раз, когда другой URL-адрес и IE не будут кэшировать

url +""+ (new Date()).getTime()

Ответ 3

Использует это в вашем теге заголовка

<meta http-equiv="X-UA-Compatible" content="IE=9,chrome=1">

Ответ 4

Если вы работаете локально, попробуйте переключить crossDomain на false. Я потратил немало времени на это. Chrome обработал crossDomain, но в IE, если вы не используете crossDomain, и у вас установлено значение true, он будет терпеть неудачу.