Javascript 从返回的JSON对象通过jQuery呈现ruby对象

Javascript 从返回的JSON对象通过jQuery呈现ruby对象,javascript,jquery,ruby-on-rails,json,render,Javascript,Jquery,Ruby On Rails,Json,Render,我不知道这是否是正确的方法,但我想完全按照标题所说的去做。我缺少一些jQuery概念,因为我是新手 我正在使用jQuery.rest: 此脚本定期检查联机和脱机用户是否已更新: <!-- Online checker --> <script type="text/javascript"> $(function(){ setInterval (checkTrackings, 5000); var js = '<checkTrackings>

我不知道这是否是正确的方法,但我想完全按照标题所说的去做。我缺少一些jQuery概念,因为我是新手

我正在使用jQuery.rest:

此脚本定期检查联机和脱机用户是否已更新:

<!-- Online checker -->
<script type="text/javascript">
  $(function(){
    setInterval (checkTrackings, 5000);
    var js = '<checkTrackings> ';
    function checkTrackings(){     
      $.read(
        '/users/{id}/check',
        { id: <%= @user.id.to_json %> },
        function (response) {
          $("ul#online").empty();
          $("ul#offline").empty();

          // Code to add users back to list
          $("ul#online").html('<%= escape_javascript(render(@online_users)).html_safe %>')
          $("ul#offline").html('<%= escape_javascript(render(@offline_users)).html_safe %>')


          console.log(js + 'Check trackings');
        }
      );
    }
  });
</script>

其他的建议也不错。我是网络开发新手。谢谢你的帮助

您是否尝试登录响应

function (response) {...}
您的响应应分别包含response.online_用户和response.offline_用户对象,以便登录为:

function (response) {
  console.log(response.online_users, response.offline_users);
  ...
}
并查看您的响应是否包含json对象

因此,如果您有response.online_用户,您将希望在javascript中执行此操作:

// Code to add users back to list
var online_users = response.online_users,
    online_users_len = online_users.length,
    buffer = [];

for(var i = 0; i < online_users_len;  i++) {
  buffer.push("<li>", online_users[i], "</li>");
}
          $("ul#online").html(buffer.join(""));
// Put the offline user count in ul#offline
          $("ul#offline").html(response.offline_users);
//将用户添加回列表的代码
var online_users=response.online_users,
online_users_len=online_users.length,
缓冲区=[];
对于(var i=0;i”,在线用户[i],“”;
}
$(“ul#online”).html(buffer.join(“”);
//将脱机用户数放入ul#脱机
$(“ul#offline”).html(response.offline#u用户);

太棒了,这是我刚刚做的测试。当没有用户联机时,“响应。联机用户”为空,当1个用户联机时,它变为[object]。所以我得到了json,但是我如何将它们转换回ruby呢?谢谢。您想将其转换回将传递回动作的内容吗?将它们从前端转换回ruby的应用是什么?我已经有了一种渲染ruby对象的方法。所以我想使用以下代码:$(“ul#online”).html(“”),其中@online_用户从response.online_用户更新。这是对好友列表及其在线状态的定期更新。编辑原始帖子后,当您刷新页面时,您的javascript文件应将其放入其中,但由于您希望使用数据异步,因此必须通过javascript而不是ruby传递json。感谢@realchaseadams,这就是我需要知道的全部内容。救生员。
// Code to add users back to list
var online_users = response.online_users,
    online_users_len = online_users.length,
    buffer = [];

for(var i = 0; i < online_users_len;  i++) {
  buffer.push("<li>", online_users[i], "</li>");
}
          $("ul#online").html(buffer.join(""));
// Put the offline user count in ul#offline
          $("ul#offline").html(response.offline_users);