javascript - 使用rails如何将 Controller 中的变量同步到 View ,其中 Controller 是更新的发起者

标签 javascript jquery ruby-on-rails ruby ajax

我尝试了 AJAX 中的长轮询,客户端以一定的时间间隔调用服务器请求数据。 - UI中列表的更新是由客户端发起的

下面是代码:

服务器 Controller .rb

@@x=0
def results
  @@x++
  render :json =>  @@x
end

index.html.erb

<button id='get_value' class="btn">Run</button>
<ul id="value_variable_from_controller"><ul>

$(document).ready(function() {
    var getPoll=function getValue(trigger) { 
    $.ajax({
      type: 'GET',
      url: '/server/results/',
      success: function(data, status) {
        if (data < 50){
            $('#value_variable_from_controller').append("<li>"+data+"</li>");
          setTimeout(getValue(true), 1000);}},})}
$(document).on("click","#get_value",getPoll);

问题是,在 Controller 有权启动/发送数据并且 HTML 上的列表同步更新/附加的情况下,我该如何做相反的事情?

最佳答案

这做起来比较棘手,因为您需要额外的技术。 HTTP 及其 request-respond模型无法做到这一点。客户端(浏览器)无法接收来自服务器的请求。

您最终将得到双向通信,因为首先客户端向服务器询问事情,然后服务器要求客户端更新。用于执行此操作的技术是 websockets 。 Rails 不包含此功能,因此您需要通过 gems ( websockets-gem ) 或/并且事件驱动的非阻塞服务器(如 node.js)添加它也很有用。

有不同的教程可以帮助您入门。 Here这是一个带有两个漂亮的小图形的示例,它解释了这种情况。

关于javascript - 使用rails如何将 Controller 中的变量同步到 View ,其中 Controller 是更新的发起者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26270048/

相关文章:

javascript - 改变菜单方向

ruby-on-rails - 如何在 rspec 中的模型副本上 stub 方法?

javascript - 你能将 AngularJS 与 Rails 模型一起使用吗

javascript - 折叠选项卡 "manually"不要更改启动按钮上的文本

ruby-on-rails - 我如何运行所有 rake 任务?

javascript - 为什么addEventListener中传递参数时必须要有匿名函数?

javascript - 从 console.log 调用 webpack 捆绑函数/类

javascript - Ajax根据行获取表值

javascript - jQuery - 在 iframe 内按钮的 onclick 事件中更改 iframe 高度

javascript - 我如何在 HTML 中执行此 SELECT/OPTION? (javascript)