Jquery 在每个ajax.beforeSend()和complete()上添加事件
我需要在每个ajax请求中检查应用程序的版本。 我是这样做的:Jquery 在每个ajax.beforeSend()和complete()上添加事件,jquery,ajax,version,Jquery,Ajax,Version,我需要在每个ajax请求中检查应用程序的版本。 我是这样做的: $(function() { var version; $.ajaxSetup({ beforeSend: function(event, xhr){ xhr.setRequestHeader('Version', version); console.log(version); }, complete: function(xhr) { var localVer
$(function() {
var version;
$.ajaxSetup({
beforeSend: function(event, xhr){
xhr.setRequestHeader('Version', version);
console.log(version);
},
complete: function(xhr) {
var localVer = xhr.getResponseHeader('Version');
console.log(localVer);
if( typeof version === "undefined" ){
version = localVer;
} else if( version !== localVer ){
var r = confirm("Version has been changed.");
if (r == true) {
location.reload(true);
}
}
}
});
});
但是,通过调用ajax.beforeSend覆盖这些方法,并在发送请求时完成。
比如:
发送前:
不排队。正如您所观察到的,特定的发送前:
将覆盖由$.ajaxSetup()
-建立的发送前:
您可以这样做:
function setRequestHeader(xhr) {
xhr.setRequestHeader('Version', version);
console.log(version);
}
$.ajax({
beforeSend: function (xhr) {
setRequestHeader(xhr);
loader();
}
});
但这可能很容易做到:
$.ajax({
beforeSend: function (xhr) {
xhr.setRequestHeader('Version', version);
loader();
}
});
或者将xhr.setRequestHeader('Version',Version)
合并到您的loader
函数中,并允许传递xhr
:
function loader (xhr) {
xhr.setRequestHeader('Version', version);
...
}
$.ajax({
beforeSend: loader
});
问题是我有将近50个.ajax请求。有没有办法增加这个功能,不涉及每个请求?据我所知,没有。
function loader (xhr) {
xhr.setRequestHeader('Version', version);
...
}
$.ajax({
beforeSend: loader
});