JQuery的.$ .post请求.done().fail()避免代码重复

Igo*_*pko 5 javascript jquery jquery-ui jquery-plugins

我有一个帖子请求

  $.post("test", {
    ajax: "true",
    action: ""
  }).done(function(data){
    if (data == "ok"){
        //xxx
    } else if (data == "err"){
        //yyy
    }
  }).fail(function(){
    //yyy
  });
Run Code Online (Sandbox Code Playgroud)

如果.done()方法中的代码(注释'yyy')在fail方法中相同(注释'yyy'),如何避免post请求中的代码重复?

Rud*_*ser 8

最明显和最简单的解决方案是简单地进行故障回调,如下所示:

function ajaxFailed() {
    // yyy
}

$.post("test", {
    ajax: "true",
    action: ""
}).done(function(data){
    if (data == "ok"){
        //xxx
    } else if (data == "err"){
        ajaxFailed();
    }
}).fail(ajaxFailed);
Run Code Online (Sandbox Code Playgroud)


hal*_*ilb 4

您可以使用always回调方法,并且请求将始终进入该块。如您所知,当数据包含错误或不包含错误时,此方法适用于服务器端错误。您可以通过定义最后的 else 块来捕获客户端错误。

$.post("test", {
    ajax: "true",
    action: ""
}).always(function(data){
    if (data == "ok"){
        //xxx
    } else if (data == "err"){
        //handle server-side errors
    } else {
        //handle client-side errors like 404 errors
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 我认为当请求失败时你不会得到`data=="err"`。 (2认同)