如何调用失败方法到jquery.get / post成功方法?

时间:2019-06-21 12:23:57

标签: jquery ajax post get

我如何将一个fail方法调用为ajax回调成功方法?例如,当我从服务器获取某个日期时,我不得不说此数据不正确。为此,我使用以下代码:

Loading.show();
$.post(_api_server+"sign/in.php",opt,function(gets){
    try{
            if(gets.success){  
                Toast.show("success!!!","succ"); 
            }else{ 
                // duplicate codes
                Loading.hide();
                Toast.show("not Ok!!!");
            }
    }catch(e){
        // duplicate codes
        Loading.hide();
        Toast.show("not Ok!!!");
    } 
}).fail(function(){
    // duplicate codes
    Loading.hide();
    Toast.show("not Ok!!!");
});

如您所见,我使用重复的代码来做某事。我想使用这样的东西:

Loading.show();
$.post(_api_server+"sign/in.php",opt,function(gets){
    try{
            if(gets.success){  
                Toast.show("success!!!","succ"); 
            }else{ 
                this.fail();
            }
    }catch(e){
        this.fail();
    } 
}).fail(function(){
    Loading.hide();
    Toast.show("not Ok!!!");
});

我该怎么做?有什么办法吗?

-更新

我有许多使用不同失败方法的ajax,我不能使用其他/外部函数。

1 个答案:

答案 0 :(得分:2)

您只需将重复的代码放在一个函数中。如果您将其定义为非匿名函数,或者您通过变量引用了匿名函数,则可以从任何地方调用它。


var failedRequest = function(){
    Loading.hide();
    Toast.show("not Ok!!!");
};

Loading.show();
$.post(_api_server+"sign/in.php",opt,function(gets){
    try{
            if(gets.success){  
                Toast.show("success!!!","succ"); 
            }else{ 
                failedRequest();
            }
    }catch(e){
        failedRequest();
    } 
}).fail(failedRequest);