5

プロジェクトにいくつかのページがあり、プロジェクトで多くの ajax リクエストを使用したという問題がありますが、今では、ajax リクエストが呼び出されるたびに関数が呼び出され、そのリクエストが終了するたびに別の関数が呼び出されると思います。これをグローバルに行うにはどうすればよいですか。これをすべてのajaxリクエストに入れることができることはわかっていますが、1か所で行うソリューションが必要で、プロジェクト全体で機能します。

$(document).read(function(){
 // Suppose this document load function is written on layout page and every page is  inherited from this page
});
4

4 に答える 4

5

たとえば、ajaxSetupを使用します

$.ajaxSetup({
    beforeSend: function() {
        console.log('test');
    },
    complete: function() {
        console.log('completed');
    }
});

すべてのajax リクエストbeforeSendのハンドラーをセットアップします。できる任意のオプションを取ることができることに注意してください。ajaxSetup$.ajax

于 2012-05-09T08:11:32.120 に答える
2

ajax のラッパー関数を作成してから、その関数を使用する必要があります。そうすれば、ajax 呼び出しを「中央」で制御できます。何かのようなもの:

//fast and crude way to extend jQuery
$.fn.customAjax = function(params){

    //contains defaults and predefined functions
    var defaults = {
        complete : function(){...default complete hander...},
        beforeSend : function (){...default beforeSend handler}
        ...
    }

    //merge settings
    var finalParams = $.extend({},defaults,params);

    //call ajax and return the deferred
    return $.ajax(finalParams);
}

//use it like
$.customAjax({
   url : ...,
   method : ...,
   data: ...,
   complete : function(){...} //redefining in the call will override the defaults
});
于 2012-05-09T08:07:06.333 に答える
1

.ajaxStart

最初の Ajax リクエストの開始時に呼び出されるハンドラーを登録します。

.ajax成功

Ajax リクエストが正常に完了するたびに実行される関数をアタッチします。

詳細ドキュメント: http://api.jquery.com/category/ajax/

于 2012-05-09T08:07:22.650 に答える
0

次のようなものを試してください。

$.ajax({
  url: "test.html",
  context: document.body
}).done(function() { 
   $.ajax({
     url: "anotherMethod.html",
     context: document.body
   });
});
});

つまり、ajax呼び出しが正常に完了するたびに、希望の呼び出しを呼び出します。

于 2012-05-09T08:05:13.357 に答える