我试图在不刷新整个索引页面的情况下更新“mydiv”的内容。
@mydata由mycontroller提供。我需要每隔n秒重新计算一次,并将其传递给“mydiv”
有了“链接到”就行了
index.html.erb
<;%=
链接到('refresh','/mycontroller/index',:remote=>;true)
%&燃气轮机;
<;div id=“mydiv”>;
<;%=
@我的数据
%&燃气轮机;
</部门>;
index.js.erb
$('#mydiv').html('<;%=escape_javascript(@mydata)%>;'))
现在我需要每隔n秒自动刷新“mydiv”的内容(因此无需点击链接)。我尝试了以下解决方案:
- 第一环节
- 第二环节
但是没有运气
在我的application.js中,我写了以下内容:
函数执行函数(){
$.ajax({
//url:“/index”,
成功:功能(数据){
$('#mydiv').html(数据)
}
});
setTimeout(executeQuery,500);
}
$(文档).ready(函数(){
setTimeout(executeQuery,500);
});
对于面临我同样问题的人,我通过替换解决了这个问题
$('#mydiv').html(数据)
与
$('#mydiv').load('/mycontroller/index#mydiv'))
使用setInterval()而不是使用setTimeout()
Ref:https://www.w3schools.com/jsref/met_win_setinterval.asp
函数执行函数(){
$.ajax({
键入:“GET”,
url:'example.com/url/',//在此处提供您的响应url。
成功:功能(数据){
$('#mydiv').html(数据);
}
});
}
setInterval(executeQuery(),(n*1000));//将“n”替换为所需的秒数。
此代码将每隔“n”秒运行一次executeQuery()方法。这样你的要求就完成了