7

次のような投稿リクエストがあります

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

.done() メソッド (コメント 'yyy') のコードが fail メソッド (コメント 'yyy') と同じである場合、ポスト リクエストでコードの重複を避ける方法は??

4

4 に答える 4

8

最も明白で単純な解決策は、次のような失敗のコールバックを単純に持つことです。

function ajaxFailed() {
    // yyy
}

$.post("test", {
    ajax: "true",
    action: ""
}).done(function(data){
    if (data == "ok"){
        //xxx
    } else if (data == "err"){
        ajaxFailed();
    }
}).fail(ajaxFailed);
于 2012-12-20T09:53:16.803 に答える
4

常にコールバック メソッドを使用でき、リクエストは常にそのブロックに入ります。データにエラーが含まれている場合と含まれていない場合を知っているように、このメソッドはサーバー側のエラーに対して機能します。また、最後の 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
    }
});
于 2012-12-20T10:11:44.660 に答える
1

同じ関数を呼び出してもらいます。例:

function onErr() { 
    //yyy
}
$.post("test", {
    ajax: "true",
    action: ""
}).done(function(data){
    if (data == "ok"){
        //xxx
    } else if (data == "err"){
        onErr();
    }
}).fail(onErr);
于 2012-12-20T09:54:06.663 に答える
0

別の方法として、プロトコルをわずかに変更し、HTTP ステータス コードを使用して成功または失敗を示すこともできます。

if($sqlError){
  header("HTTP/1.1 503 Service unavailable");
}

...

.done(function(){
   //xxx
}).fail(function(){
   //yyy
});
于 2012-12-20T10:09:49.337 に答える