jQuery ajaxSetup перед отправкой не выполняется в IE8

#jquery #ajax #internet-explorer-8

#jquery #ajax #internet-explorer-8

Вопрос:

Мой проект использует jQuery 1.4.2. У меня есть некоторая информация о безопасности, которую я добавляю в свои заголовки AJAX… Способ, которым я это делаю, заключается в использовании $.ajaxSetup () и установке функции beforeSend.

 $(document).ready(function (e) {
    $.ajaxSetup({
        global: true,
        beforeSend: function (jqXHR, settings) {
            var verificationToken = 'some encrypted string';
            jqXHR.setRequestHeader("X-Request-Verification-Token", verificationToken);
        }
    });
})
  

Насколько я понимаю, это должно выполняться каждый раз, когда я делаю вызов $.ajax (), верно?
Он отлично работает в Chrome, Firefox, IE9 и так далее, но иногда не в IE7 / 8.

Вот где я это называю:

 $.ajax({
    type: "POST",
    async: true,
    data: 'somedata',
    url: "/some/url",
    success: function (data) {
        alert("success");
    },
    error: function (data) {
        alert("error");
    }
});
  

Я нашел обходной путь, который заключается в добавлении beforeSend непосредственно к вызову $.ajax () (ниже), но я действительно хочу сделать это глобально, а не добавлять его во множество мест в коде…

 $.ajax({
    type: "POST",
    async: true,
    data: 'somedata',
    url: "/some/url",
    success: function (data) {
        alert("success");
    },
    error: function (data) {
        alert("error");
    }
    beforeSend: function (jqXHR, settings) {
        var verificationToken = 'some encrypted string';
        jqXHR.setRequestHeader("X-Request-Verification-Token", verificationToken);
    }
});
  

Есть какие-нибудь подсказки?

Спасибо! Neil

Комментарии:

1. возможно обновить версию jquery? проблема здесь в версии Jquery 1.4, использующей XMLHttpRequest

2. Сложно обновить jQuery… Он довольно часто используется на сайте, и повторное тестирование всего может быть затруднительным. Есть ли какие-либо серьезные изменения в API между 1.4.x и 1.5?

3. Не уверен, собираюсь дочитать до конца, братан.

4. Я знаю, что это устарело, но являются ли ваш вызов ajax и ajaxSetup вызовом в одной и той же оболочке document ready?

Ответ №1:

Хорошо, в отсутствие какого-либо другого ответа, настоящим я объявляю, что это ошибка в jQuery 1.4.x. Решение заключается в обновлении до более поздней версии jQuery, что, к сожалению, для меня невозможно.

Если у кого-нибудь есть лучший ответ / исправление, я с радостью удалю этот и пометлю их как правильные.

Комментарии:

1. Это не обновление jQuery. Я вижу то же самое в jQuery 1.8

2. Я получаю это в 1.10.3

3. Я нигде не смог найти jquery версии v1.10.3. Но для версии v1.10.2 это исправлено. но странно, что для версии v1.12.4 у меня это не сработало