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