我试图建立一个通知用户任何新的私人消息的系统,消息控制器的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