我使用
设置了一些自定义标题$.ajaxSetup({
headers : {
'x-custom' : 'value'
}
});
它将为所有ajax请求添加x-custom
标头。但我想要一些不包含此标题的特定请求。
我试过这个,在ajax调用之前从ajaxSettings中删除标题,并在完成后将其添加回来
delete $.ajaxSettings.headers["x-custom"];
$.ajax({
...
"success": function (data) {
$.ajaxSettings.headers["x-custom"] = 'value';
...
}
});
但我觉得这不是正确的方法,因为在完成该调用之前触发的请求将不会获得该标头。我还能做些什么,请建议。
我应该在$.ajax
之后的下一行添加标题,而不是在回调中添加吗?
答案 0 :(得分:16)
由于此问题没有任何可以标记为已接受的答案。我正在发布解决方案。
看起来像在AJAX调用之后立即添加回头是有意义的。这样我们就不会等待成功回调然后添加它。
delete $.ajaxSettings.headers["x-custom"]; // Remove header before call
$.ajax({
...
"success": function (data) {
...
}
});
$.ajaxSettings.headers["x-custom"] = 'value'; // Add it back immediately
答案 1 :(得分:0)
您可以添加ajaxComplete函数。它将在你所有的ajax请求之后运行,并做任何你想做的事 像这样的东西,
$(document).ajaxComplete(function(event, xhr, settings) {
// Add the headers again.
$.ajaxSetup({
headers : {
"x-custom" : "value"
}
});
}
});
您可以找到文档here 此外,从jQuery 1.8开始,.ajaxComplete()方法只应附加到文档。