2011-11-12 72 views
0

數據我感到困惑的下面使用JS的問題:麻煩讓使用PeriodicalUpdater

var abc=''; 
var on=new Ajax.PeriodicalUpdater("onlinelist","URL", 
    { 
     method:'get', 
     onSuccess:function(transport){ 
      abc+=transport.response; 
     }, 
     frequency:1000 
    } 
); 
if(abc!=='') { 
    on.stop(); 
    alert(abc); 
} 

然而,該警報是空的;如果我有alert('123');alert(abc);

更換alert(abc);線那我就從transport.response

我查了很多資料得到預期的內容,不知道爲什麼會這樣。 我希望有人能指出原因並在不添加額外的第一次提醒的情況下解決問題。

回答

0

frequence應該是frequency。我假設其他值只是佔位符。

alert將在Ajax請求有機會完成之前觸發,並且由於以下Ajax請求而不會調用警報。

查看(修改)working fiddle

+0

謝謝您指出錯誤。我修改了它。關鍵是我想多次停止Ajax.PeriodicalUpdater。然後獲得abc。就像代碼現在顯示的那樣:在「if」部分警告,我的運行停止,並且如果有一個「警報」,abc是空的。如果「if」部分中有兩個「alert」,則abc不是空的。真奇怪 。 –

+0

@JimLally但是如果你需要根據updater的結果做一些事情,那麼顯然需要在'success'函數中發生。更新程序外部的代碼只能運行一次。 –

+0

Ohh,有沒有更好的想法來阻止更新程序〜?但是,我明白了你的意思,即使我將頻率更改爲1,更新程序也只運行一次,這意味着on.stop()的外部代碼可以工作。警報問題發生。 –