我試圖建立一個通知用戶任何新的私人消息的系統,消息控制器的index方法創建實例@messages和@newmessages的變量,兩者都用於index.html .erb,我想讓它變成這樣index.js.erb會讓我的網站上的Flash消息框出現。在rails中發送Javascript請求
Ive得到jQuery的運行每隔幾秒鐘一個功能,即獲取運行的功能
function checkagain(){
//Start a Timer, dont want it bombarding the server with constant requests
$.timer(10000,function(){
$.getScript("/messages.js");
//RECURSE, see you again in 10 seconds
checkagain();
});
}
$ .getScript似乎不使其運行在index.js.erb的代碼是簡單的:
alert("RESPONDING");
我似乎無法讓它觸發該頁面上的代碼。
我發現/messages.js不返回任何JavaScript,只是一樣index.html.erb
控制器的index動作是:
def index
@messages = Message.find(:all, :conditions => "receiver_id = '#{current_user.id}' AND `read` = '1'")
@newmessages = Message.find(:all, :conditions => "receiver_id = '#{current_user.id}' AND `read` = '0'")
end
題外話,但你在做什麼沒有遞歸。評論是誤導性的。 – 2010-01-02 21:26:37
它在該函數的新版本中基本上是相同的東西,但將更高的延遲傳遞到下一個函數調用,然後在延遲超過10分鐘時停止 – Arcath 2010-01-02 21:33:55
問題是,checkagain或匿名函數都不在棧中兩次與此同時;因此,沒有遞歸。 – 2010-01-02 21:42:52