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

标签 javascript jquery ruby-on-rails-3

我有一个 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/

相关文章:

javascript - 如何使用 tsc 从 typescript 生成 amd 模块?

javascript - 特殊字符未导出至 PDF

jquery - 点击p.class,隐藏div.class - Jquery

javascript - 使用 clipRect() 后设置 PhantomJS 捕获整个屏幕

javascript - 用户登录时更新所有用户相关数据(可观察)

jquery - 如何在到达某个部分或 div 之前滚动带有固定导航栏的网页?

ruby-on-rails - Rails Associations Riddle : User, 讲师、学生和事件

ruby-on-rails-3 - 还有什么其他方法可以用 Cucumber 测试 Devise 'not logged in'?

ruby - 为什么在 ruby​​/rails/activerecord 中并不总是需要 self?

javascript - 单击空格时,Blueimp fileupload 打开文件选择器。