我需要检查每个 ajax请求中的应用程序版本。 我做了这样的事情:
$(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 来覆盖此方法,并在我发送请求时完成。 像:
beforeSend: function() {
loader();
},
答案 0 :(得分:0)
beforeSend:
不排队。如您所见,特定beforeSend:
将覆盖由beforeSend:
- fiddle建立的$.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
});