2011-01-11 20 views
1

私は、phpとajaxを使用するfacebookアプリケーションを完成させて、友人に関する統計を取得し、ベストマッチを見つけます。アプリはタブを使用していて問題なく動作していますが、あるタブをクリックしてAjaxリクエストを送信してローディングアイコンが表示されたときに応答が返ってこない、読み込み中のアイコンが引き続き表示されることがあります。私は数秒後に別のHTMLページにユーザーをリダイレクトするように、何秒間AJAX呼び出しが行われているかを数える方法がありますか?応答を得る前にajax呼び出し時間を計算する

答えて

1

入手したいものを実現するには、(setTimeout()を使用してX秒後に)ajax応答がロードされたかどうかをチェックする関数を呼び出すことができます。たとえば :

var responseLoaded = false;  

function checkIt(){ 
    if(!responseLoaded) 
     window.location = "%http://alternative-page%"; 
} 

setTimeout(checkIt,10000) //after 10 seconds 

responseLoadedはAjaxのレスポンスの最後にtrueに設定することができるグローバル変数である可能性があります。 あるいは、いくつかのDOM要素やJSのvarが

その後(関数はsetTimeoutを介して呼び出されました)、その時点で(つまり、AJAX呼び出しによって作成された)が存在する場合、代わり、あなたがチェックすることができ、あなたは使用することができ

Date.getTime() 

現在のタイムスタンプを取得します。最初のタイムスタンプとAjaxレスポンスの終わりのタイムスタンプを比較して、合計時間を確認することができます。 (平均AJAXの読み込み時間を確認したい場合)

+0

私はまだこの解決策を実装していませんでしたが、私はそれが問題を解決する方法についての良い洞察を提供し、確かに私のための良い出発点だと思う。 – khr2003

1

もう1つのオプションは、xmlhttprequestオブジェクトのtimeoutパラメータを設定することです。 jQueryでは、オプションオブジェクトのタイムアウトオプションです。

$.ajax ({ 
    timeout: 1000, 
    success: successCallback, 
    error: function (req, error, errorStatus) { 
     if (error == 'timeout') { 
      //send them to other page.... 
     } 
    } 
}); 

おそらく、また...しかし、いくつかのより多くのエラーハンドラに置きたいと思うでしょうxmlhttpobject2がタイムアウト関数コールバックに持つため、このプロセスは、今より合理的であるかもしれない...

しないでください文法についても私を正確に引用してください。私は記憶から私の電話にこれを書いています....

関連する問題