gpt4 book ai didi

javascript - 在 Rails 3 应用程序中使用 jQuery 刷新 div 元素

转载 作者:行者123 更新时间:2023-11-30 13:24:23 24 4
gpt4 key购买 nike

我有一个 Rails 3 应用程序,它使用 resque 在后台运行长时间运行的作业,我想在另一个页面上创建结果 View

目前我有这个场景在工作

Resque 运行一个作业并在其进行时将信息写入数据库(更新信息条目)。作业完成后,它会更新其中一个数据库条目,即设置 complete = 1(complete 的创建值为 0)

数据库模式是

create_table "refreshes", :force => true do |t|
t.string "name"
t.string "info"
t.integer "complete"
t.datetime "created_at"
t.datetime "updated_at"
end

应用程序中的另一个页面 View 将通过调用它的 Controller 并在页面上显示最新数据来显示数据库条目,如果数据库中的完整值不是,该 View 有一段逻辑插入标准的 JavaScript 刷新元素等于 1

view.html.erb

<% if  @refreshes.complete == 0 %>
<meta http-equiv='refresh' content='5'>
<%end%>

<div id="data">
<p>
<b>Name:</b>
<%= @refreshes.name %>
</p>
<p>
<b>Info:</b>
<%= @refreshes.info %>
</p>
</div>

Controller 方法

def view
@refreshes = Refresh..find(params[:id])

respond_to do |format|
format.html # view.html.erb
format.xml { render :xml => @refreshes }
end
end

这一切都很好,但当 complete 设置为 0 时,它确实每 5 秒重新加载一次完整页面,而我想要做的只是刷新显示数据的 div (div id = data),而不刷新整个页面页面。

我认为这可以使用 jquery 和一些 JavaScript 来完成,但我找不到方法,所以有人可以帮忙吗?或者即使你能指出我的方向,我也会很感激干杯迈克

最佳答案

是的,这可以使用 JavaScript 完成。一种方法是

  1. 要每 n 分钟刷新一次 div,您可以使用 setInterval每 n 毫秒调用一个函数的方法。
  2. 此函数应发出 ajax 请求以从服务器获取数据并将数据插入 HTML。

下面的代码使用 jQuery,但您可以使用任何其他库来获取结果。

    $(document).ready(function() {
// get data every 5 mins and refresh myDiv
var pingAfter = 5000;
var refreshId = setInterval(function() {
$("#myDiv").load('/partial/data');
}, pingAfter);
});

brightcherry.co.uk网站有一个示例代码来实现相同的目的。

关于javascript - 在 Rails 3 应用程序中使用 jQuery 刷新 div 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9032379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com