Javascript 从返回的JSON对象通过jQuery呈现ruby对象
我不知道这是否是正确的方法,但我想完全按照标题所说的去做。我缺少一些jQuery概念,因为我是新手 我正在使用jQuery.rest: 此脚本定期检查联机和脱机用户是否已更新: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>
<!-- 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);