我必须为所有ajax请求添加自定义标头。我可以使用以下代码执行此操作。除了一个案例。
$.ajaxPrefilter(function (options) {
if (!options.beforeSend) {
options.beforeSend = function (xhr) {
xhr.setRequestHeader('Token', '1234');
}
}
});
假设我们在$ .ajax请求中放入beforesend,则上述预过滤器未触发(下面的示例)。你能告诉我怎样才能通过保持两者来实现它?我们有没有办法向xmlHttpRequest添加标头,以便我们可以使用来自应用程序的所有ajax请求?
$("#AdvancedserchClick").on("click", function () {
$.ajax({
async: false,
cache: false,
type: "POST",
url: getUrlWithTabId("@Url.Action("AdvancedSearch", "AdvancedSearch")"),
beforeSend: function () {
Load.show();
},
success: function (result) {
$("#advancedsearch").modal('show');
$("#advancedsearch").html(result);
},
complete: function () {
Load.hide();
}
});
});
答案 0 :(得分:0)
您可以使用以下代码
来实现此目的$.ajax({
url: 'foo/bar',
headers: { 'x-my-custom-header': 'some value' }
});
或者您可以使用预过滤器来实现此目的,但这样所有请求都将获得自定义标头,除非特定请求覆盖beforeSend选项。
$.ajaxPrefilter(function( options ) {
if ( !options.beforeSend) {
options.beforeSend = function (xhr) {
xhr.setRequestHeader('CUSTOM-HEADER-KEY', 'CUSTOM-HEADER-VALUE');
}
}
});
希望这有帮助。
答案 1 :(得分:0)
$.ajaxPrefilter(function( options, originalOptions, xhr ) {
xhr.setRequestHeader('Token', '1234');
});
文档说:
jQuery.ajaxPrefilter( [dataTypes ], handler )
Description: Handle custom Ajax options or modify existing options before
each request is sent and before they are processed by $.ajax()