Удалить определенные заголовки запросов, заданные в jQuery.ajaxSetup
Я настраиваю некоторые пользовательские заголовки, используя
$.ajaxSetup({
headers : {
'x-custom' : 'value'
}
});
Он добавит заголовок x-custom
для всего запроса ajax. Но я хочу, чтобы некоторые конкретные запросы НЕ содержали этот заголовок.
Я пробовал это, удаляю заголовок из ajaxSettings перед этим ajax-вызовом и добавляю его обратно, когда его завершенный
delete $.ajaxSettings.headers["x-custom"];
$.ajax({
...
"success": function (data) {
$.ajaxSettings.headers["x-custom"] = 'value';
...
}
});
Но я считаю, что это не так, поскольку запрос, который был запущен до завершения этого вызова, не получит этот заголовок. Что еще я могу сделать, пожалуйста, предложите.
Должен ли я добавить заголовок обратно в следующей строке после $.ajax
вместо этого в обратном вызове?
Ответы
Ответ 1
Поскольку у этого вопроса нет ответа, который может быть отмечен как "Принято". Я отправляю решение.
Похоже на добавление назад заголовка сразу после вызова AJAX. Таким образом, мы не будем ждать ответа обратного вызова, а затем добавим его.
delete $.ajaxSettings.headers["x-custom"]; // Remove header before call
$.ajax({
...
"success": function (data) {
...
}
});
$.ajaxSettings.headers["x-custom"] = 'value'; // Add it back immediately
Ответ 2
Вы можете добавить функцию ajaxComplete. Он будет работать после всех ваших запросов ajax и делать все, что вы пожелаете.
Что-то вроде этого,
$(document).ajaxComplete(function(event, xhr, settings) {
// Add the headers again.
$.ajaxSetup({
headers : {
"x-custom" : "value"
}
});
}
});
Вы можете найти документацию здесь.
Кроме того, с jQuery 1.8 метод .ajaxComplete() должен быть прикреплен только к документу.