如何从JQuery ajax继承?

时间:2014-01-23 17:36:46

标签: ajax jquery inheritance

我经常使用ajax请求:

$.ajax({
   done : function() {
              alert( "success" );
   },
   fail : fonction() {
              alert( "error" );
   }
})

对于我的一个项目,我想为每个ajax请求创建一些默认操作,我想知道如何使用JavaScript继承来实现它。

我希望它看起来像:

// Definition of the custom and global object in order to override some basic ajax options.
MyCustomAjaxObject = new $.ajax();
MyCustomAjaxObject.error( function () { /* some code for a default */});

// Further in the code, at the moment to trigger one of the ajax request
foo = new MyCustomAjaxObject({
    url : myDestination,
    data : someData
});

你知道是否可以在JavaScript中使用那种继承?

1 个答案:

答案 0 :(得分:2)

$.ajax()因为它实际上并不是用作构造函数,所以继承可能无法轻松实现你想要的东西。

您可以为其创建一个包装器,以根据需要修改options或生成$.Deferred

// A) default handler
function customAjax(options) {
    if (!options.error) options.error = function () {
        // ...
    };
    return $.ajax(options);
}
// B) always-in-queue handler
function customAjax(options) {
    return $.ajax(options).error(function () {
        // ...
    });
}

而且,如果您只需要捕获ajax事件,jQuery确实包含global event bindings

$(document).ajaxError(function () {
    // ...
});