javaScript:添加默认错误回调

时间:2014-03-03 17:18:09

标签: javascript jquery ajax

我有一个函数,它反过来调用ajax。我在我的所有页面中都使用过它。

    function getFunc(fullURL, successCallback, errorCallback) {
        $.ajax({
            type : 'GET',
            url : fullURL,
            async : false,
            dataType : 'json',
            success : successCallback,
            error : errorcallback   

      });
    }

并按以下方式调用此函数 -

getFunc(someurl,
            function(data){
                //display data
             },
          function(xhr, textStatus, errorThrown){
                //display errors
           }
 );

此代码工作正常。现在我必须添加一些默认的错误处理代码,该代码适用于调用getFunc(..)的所有网页,但我不想进入每个网页并执行此操作。我怎么能在getFunc(..)中做到这一点?

,我需要一种方法来做到这一点 -

function getFunc(fullURL, successCallback, errorCallback) {
            $.ajax({
                type : 'GET',
                url : fullURL,
                async : false,
                dataType : 'json',
                success : successCallback,
                error : do some default error handling and then call errorCallback  

          });
        }

2 个答案:

答案 0 :(得分:3)

为什么不将匿名函数传递给error而不是errorcallback。让函数执行操作,然后在完成后调用errorcallback

function getFunc(fullURL, successCallback, errorCallback) {
    $.ajax({
        type: 'GET',
        url: fullURL,
        async: false,
        dataType: 'json',
        success: successCallback,
        error: function(xhr, textStatus, errorThrown){
            // Do whatever
            // ...

            // Then call errorCallback
            errorCallback.apply(this, arguments);
        }
    });
}

答案 1 :(得分:0)

我觉得你的意思是, 如果错误未被调用者处理 - 即他们没有指定函数..

将你的getFunc更改为:

function getFunc(fullURL, successCallback, errorCallback) {
    $.ajax({
        type : 'GET',
        url : fullURL,
        async : false,
        dataType : 'json',
        success : successCallback,
        error : function(error) { 
             if(errorcallback)
                errorcallback(error.xhr...etc...);
             else
                catchUnhandled(error);
        }

    });
}
function catchUnhandled (error)
{   //place catch all code here }