4

私がやりたいのは、すべてのリクエストが通過するデフォルトの成功関数と、個々の呼び出しのためのものを持つ特定の関数を持つことです。

何かのようなもの

function handleResponse(data, func){
    if(data.error){
        display error information
    }else{
        func(data)
    }
}

$.ajax({
    success: handleResponse(data, function(){
        Individual request callback function
    })
});

それ自体でうまくいくかどうかはよくわかりませんが、私がやろうとしていることの論理を理解できるようにこれを書いています. 私が聞きたいのは、このhandleResponse関数などを渡す方法があるかどうかです。そうすれば$.ajaxSetup、通常は単一の匿名関数だけでhandleResponse自動的に呼び出されるように ajax 応答を処理できますか?

ありがとう!

4

7 に答える 7

3

jQuery が成功ハンドラーを呼び出すとき、そのような関数を渡すことは期待されていませんが、次のようなことを行うことができます。

function makeResponseHandler(func){
    return function(data) {
       if(data.error){
          // display error information
       }else{
          func(data);
       }
    };
}

$.ajax({
    success: makeResponseHandler(function(){
        //Individual request callback function
    })
});

の行success: ...は、関数をすぐに呼び出し、makeResponseHandler()個別の無名関数を渡します。次に、makeResponseHandler()関数は別の関数を返し、成功のコールバックになるのはその関数です。

于 2013-06-26T11:28:08.277 に答える
0

試す

$.ajax({
    url: "/path/",
    success: handleResponse
});
于 2013-06-26T11:26:17.100 に答える
0
$(document).ajaxcomplete(function(){
//This function is executed on every ajax call completion.
});

次に、あなたがするようにあなたの要求をするだけです...

$.ajax({
    url: "/path/",
    success: function(){
        //My handler for this call.
    }
});

詳細については、http://api.jquery.com/category/ajax/global-ajax-event-handlers/を参照してください。

于 2013-06-26T11:33:40.517 に答える
0

なぜだめですか ?

$.ajax({
    url: "/path/",
    success: function(data){
       handleResponse(data, function(){
       });
    }
});

function handleResponse(data, callback){
   if(data.error){
      display error information
   }else{
      callback.call();
   }
}
于 2013-06-26T11:29:15.940 に答える