RoR 4和jQuery - setInterval中的数据未更新

时间:2015-12-23 21:33:19

标签: javascript jquery ruby-on-rails-4

Rails 4环境,尝试获取一些进度条状态,以1/10秒的间隔使用当前表数据进行更新。

这里是setInterval调用的代码:

setInterval(function () {
    var current_roll = parseInt('<%= @run.current_roll %>', 10);
    var roll_per = (current_roll / max_roll) * 100
    $('#roll_progress_label').html(current_roll);
    $('#roll').attr('aria-valuenow', current_roll);
    $('#roll').attr('style', 'width:' + roll_per + '%');
    // if (current_roll = max_roll) {
    //    clearInterval(roll_interval);
    //  }
  }, 100);

为了测试目的,我已经注释掉了clearInterval。

所有数学运算正常。进度条使用适当的标签和宽度进行更新,但只需更新一次。间隔不会通过该代码旋转100毫秒。它抓住了第一个值,然后再也没有改变。理论上,此代码应该按照该计划更新#roll_progress_label的.html。 (我也用这个div的.text测试了这个,没有成功。)

另请注意,我已在数据库中确认所有数据都已正确写入。

我知道我错过了一些简单的事情。救命啊!

1 个答案:

答案 0 :(得分:0)

我敢打赌,如果你添加console.log,你会发现这个功能确实每100毫秒运行一次。服务器只呈现@run.current_roll一次,因此current_roll的值始终相同。

我认为您想要的是轮询(每隔X毫秒向服务器发出一次请求)或类似WebSockets(我在Rails 5中听到的更容易,但我没有任何直接经验)使用Rails上的WebSockets)。