2017-02-02 14 views
-1

jQuery$.ajaxコールバックを拡張する関数を作成する必要があります。 具体的には、私はを追加し、すべてbeforeSend()complete()コールバックにデフォルトコードを追加する必要があります。例えば は、私はこれを試してみました:

var custom = {}; 
var tempAjax = function(options,callback){ 
    var defaults = { }; 
    $.extend(options,defaults); 
    return $.ajax(options); 
} 
custom.ajax = function() { 
    if (!arguments[0].beforeSend) { 
     arguments[0].beforeSend = function() { 
      // my default code 
     } 
    } 
    return tempAjax.apply($, arguments).then(function(value) { 
     // my default code 
    }).fail(function() { 
     // my default code 
    }); 
} 

他のすべての$.ajax呼び出しはまだ私が定義したデフォルトのコードの他に、独自の固有のコードを実行することが重要です。 だから、次のコードは:

custom.ajax({ 
    url:  url, 
    data:  data, 
    dataType: type, 
    beforeSend: function(result){ 
     // other code 
    }, 
    success: function(result){ 
     // other code 
    }, 
    error: function (XMLHttpRequest, textStatus, errorThrown) { 
     // other code 
    }, 
    complete: function() { 
     // other code 
    } 
}); 

各コールバックタイプの// other code// my default codeを実行します。

私の解決策が期待通りに機能しているかどうかはわかりません。 それを手伝ってもらえますか?

編集:デフォルトのコードが正常に動作し続ける標準$.ajax呼び出しによってcustom.ajaxとしないことによって、使用されることも重要です。

おかげ

答えて

2

実行の順序は重要ではない場合、私はあなたがあなたのbeforeSendsuccesserrorcomplete例のためのjQueryのグローバルイベントハンドラを使用することができます信じています。

私の理解では、これらはその後呼び出すアヤックスすべての$のために呼び出されるということです...

は、この情報がお役に立てば幸い!

関連する問題