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

标签 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
    }
});

将为每种回调类型运行//其他代码//我的默认代码

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

编辑:同样重要的是,默认代码将由 custom.ajax 使用,而不是由标准 $.ajax 调用使用将继续正常运行。

谢谢

最佳答案

如果执行顺序并不重要,那么我相信您可以将 jQuery 的全局事件处理程序用于 beforeSend , success , errorcomplete案例。

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

希望这有帮助!

关于javascript - 创建自定义函数来扩展默认的 jQuery $.ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42007666/

相关文章:

javascript - 纬度/经度 map 上的圆半径

javascript - bootstrap datepicker - 突出显示第一个选定的日期

javascript - Google Cloud Print 短肖像页面上的媒体缩放问题

javascript - 使用 jQuery .submit() 检索提交的表单的 ID 和/或名称

jquery - jQuery XML Ajax 中的 If 语句

javascript - 给定 rotateX、rotateY 和 rotateZ,如何计算 matrix3d?

javascript - "$(this)"和 "this"有什么区别?

jQuery 和移动浏览器的兼容性?

javascript - Chrome,Safari - 未捕获的类型错误 : Cannot read property 'status' of null

AJAX 单选按钮不起作用