【发布时间】:2013-02-22 18:57:42
【问题描述】:
我正在尝试在不刷新整个索引页面的情况下更新“mydiv”的内容。 @mydata 由 mycontroller 提供。我需要每 n 秒重新计算一次并将其传递给“mydiv”
使用“link_to”它可以工作!
index.html.erb
<%=
link_to('refresh', '/mycontroller/index', :remote => true)
%>
<div id="mydiv">
<%=
@mydata
%>
</div>
index.js.erb
$('#mydiv').html('<%= escape_javascript(@mydata) %>')
现在我需要每隔 n 秒自动刷新“mydiv”的内容(因此无需点击链接)。我尝试了以下解决方案:
但没有运气。
在我的 application.js 中我写了这个:
function executeQuery() {
$.ajax({
//url: '/index',
success: function(data) {
$('#mydiv').html(data)
}
});
setTimeout(executeQuery, 500);
}
$(document).ready(function() {
setTimeout(executeQuery, 500);
});
对于遇到我同样问题的人,我通过替换解决了它
$('#mydiv').html(data)
与
$('#mydiv').load('/mycontroller/index #mydiv')
【问题讨论】:
-
不应该是
window.setTimeout(executeQuery, 500)吗? -
@SaurabhJain 我认为是一样的。它刷新但它将所有页面返回到“mydiv”。我只需要刷新“mydata”
-
您需要创建一个只包含您想要的内容的页面,而不是加载完整的页面。
-
@Juhana 没有使用 $('#mydiv').html(data),而是将其替换为 $('#mydiv').load('/mycontroller/index #mydiv')现在它可以工作了!
标签: ruby-on-rails ajax ruby-on-rails-3