创建自定义函数以扩展默认的jQuery $ .ajax

时间:2017-02-02 16:41:47

标签: javascript jquery ajax

我需要创建一个扩展jQuery $.ajax个回调的函数。 具体而言,我需要添加默认代码到每个beforeSend()complete()回调。 例如,我试过这个:

var custom = {};
var tempAjax = function(options,callback){ 
    var defaults = { };
    $.extend(options,defaults);
    return $.ajax(options);
}
custom.ajax = function() {
    if ( !arguments[0].beforeSend ) {
        arguments[0].beforeSend = function() {
            // my default code
        }
    }
    return tempAjax.apply($, arguments).then(function(value) {
        // my default code
    }).fail( function() {
        // my default code
    });
}

除了我定义的默认代码之外,每个其他$.ajax调用仍然会运行自己的特定代码,这一点很重要。 所以下面的代码:

custom.ajax({
    url:        url,
    data:       data,
    dataType:   type,
    beforeSend: function(result){   
        // other code
    },
    success: function(result){  
        // other code
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
        // other code
    },
    complete: function () { 
        // other code
    }
});
对于每种回调类型,

都会运行// other code // my default code

我不确定我的解决方案是否按预期工作。 你能帮帮我吗?

修改custom.ajax使用默认代码也很重要,而且标准$.ajax调用将继续正常运行。

由于

1 个答案:

答案 0 :(得分:3)

如果执行顺序无关紧要,那么我相信您可以为beforeSendsuccesserrorcomplete案例使用jQuery的全局事件处理程序。

我的理解是,之后所有$ .ajax调用都会被调用...

希望这有帮助!