Jquery 在每个ajax.beforeSend()和complete()上添加事件

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

我需要在每个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
覆盖这些方法,并在发送请求时完成。 比如:


发送前:
不排队。正如您所观察到的,特定的
发送前:
将覆盖由
$.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
});