2009-02-27 21 views
0

ここにシナリオがあります:Ajaxコールバック関数スコープ&チェーンコールバック付きAjaxリクエスト

function DataFeed(){ 

    function PopulateData() 
    { 
    $('div#example').load('http://www.example.com', fxnCallBack); 
    }; 

    function fxnCallBack() 
    { 
    PopulateData(); 
    } 

    this.activator = function() { 
    PopulateData(); 
    } 

}; 

var example_obj = new DataFeed; 
example_obj.activator(); 

上記のコードでは、ajax .loadは1回実行されてからコールバックが実行されます。しかし、コールバックは再びajax関数を開始しませんか?

ありがとうございます。

編集 - なぜそれが正しく-.-

答えて

1
InternalError: too much recursion 

JavaScriptエンジンは、通常、再帰の数や再帰的な実行がかかる場合があります時間の最大制限を持って新しい行を表示しません。代わりにのsetIntervalを使用します。

function DataFeed() { 
    var interval; 
    function PopulateData() { 
     $('div#example').load('http://www.example.com', function(data) { 
      if(data == "clear_interval") 
       interval = clearInterval(interval); // clear the interval 
     }); 
    } 

    this.activator = function() { 
     interval = setInterval(PopulateData, 1000); // run every second 
    }; 
} 
var example_obj = new DataFeed(); 
example_obj.activator(); 
+0

まあ、それは私が意図されたものを正確ではありません。 コールバック関数にロジックを実装して、より多くのデータを取得する必要があるかどうかを判断したいと考えています。 例: if($( 'div#example tr')。length <5)PopulateData(); –

+0

考えてくれてありがとう。私はそれが私がそれをしたい方法でうまくいかない場合、このようにそれを行うことを検討します。 –

+0

@ Jace:私は自分の答えを変えて、clearnIntervalを実装して再帰を止める方法を示しました。 –

関連する問題