2012-05-09 14 views
5

私はプロジェクトにいくつかのページがあり、私のプロジェクトでは多くのAjaxリクエストを使用していましたが、今はAjaxリクエストが関数が呼び出され、その要求が終了するたびに別の関数が呼び出します。どうすればこのことをグローバルに行うことができますか?これをすべてのAjaxリクエストに入れることができますが、私は1つの場所で行うソリューションが必要です。すべてのAjaxリクエストで特定の関数を呼び出す方法

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

答えて

4

例えば使用ajaxSetup

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

すべての Ajaxのリクエストのための意志のセットアップbeforeSendハンドラ:詳細docに関する

ajaxSetupには、$.ajaxできるオプションを指定できます。

+0

私はこれを書類に書いておくべきですか? – Ahsan

+0

その前に完了しましたが、Ajaxリクエストの完了時に関数を呼び出す場合はどうすればいいですか? – Ahsan

+0

あなたはJSファイルの最初から(AJAX呼び出しの前に)書くべきです。文書が準備される前にAJAXリクエストを発射したいかもしれないので、これを '$(document).ready(...);'の中に入れる理由はありません。 – freakish

0

このような何か試してみてください:AJAX呼び出しが正常にあなたの欲求コールを呼び出して終了したときに意味

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

を。

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 
}); 
+0

ニース!リターンを使うことで、あなたも遅れて世話をしてくれました。 – Raghav

1

.ajaxStart

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

.ajaxSucess

は、Ajaxリクエストが正常に完了するたびに実行される関数を取り付けます。 http://api.jquery.com/category/ajax/

関連する問題