2009-05-22 34 views
0

我有一個腳本,在數據庫中有新條目時更新表。它從表格的最後一行拉出一段時間,然後抓取從那時起輸入的所有條目。原型PeriodicExecutor不更新源

它第一次運行良好,抓取新條目並更新表格。然而,當它第二次運行時,它將使用該初始時間戳,而不檢索剛剛從數據庫中提取的當前最後一個條目。

因此,看起來PeriodicalExecuter函數在啓動時會加載頁面的html,並且無法解釋任何異步更新,或者僅保存該初始時間。無論如何要解決這個問題嗎?

下面是一些代碼:

new PeriodicalExecuter(function() { 
     new Ajax.Request(
     '#{url}&since_ts=' + $$('#posts tr:last-child td.description')[0].innerHTML.match(/Posted at: (\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2})/)[1], 
     {asynchronous:true, 
      evalScripts:true, 
      parameters:'authenticity_token=' + encodeURIComponent('#{form_authenticity_token}') 
     } 
    ) 
    }, 60) 

我是相當新的JavaScript,我將不勝感激任何幫助。

謝謝!

回答

0

後您的來電我想通了,這個問題是不是與PeriodicExecutor功能,而是我選擇的語句。所以我所要做的就是找到另一種方法來訪問表中最後一個tr元素。

$$('#posts tr td.description').last().innerHTML.match(/Posted at: (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/)[1] 

這麼簡單,但它總是你最後看到的東西。

0

我之前沒有使用Prototype,所以這是一個瘋狂的猜測,但它可能僅僅是緩存調用,因爲它默認爲GET。試試下面的參數是url

{ 
    asynchronous:true, 
    method: 'post', 
    evalScripts:true, 
    parameters:'authenticity_token=' + encodeURIComponent('#{form_authenticity_token}') 
} 
+0

這可能是真的。嘗試在您的網址中添加「+ new Date()」以使其唯一。 – 2009-05-22 21:49:09