1

我快到了,但似乎无法调试这个简单的项目。

我有页面:

<div id="count">

我正在使用以下函数从服务器获取计数:

$.get("/count?post_id=" + postId, function(post_count) {
    $('#count').html(post_count.count);

来自服务器的响应是:

[{"count":0}]

但是,页面不会随着提供的计数而更新。我曾经让响应呈现简单的文本,并且页面正在按预期使用新计数进行更新,但是在使用 json 时我无法让它工作。

有人可以帮忙吗?

编辑 1

当我做

alert(post_count)

我收到与 [object][Object] 的警报对话

但是,当我尝试做

alert(post_count.count)

我收到与未定义的警报对话。

上面提到的 JSON 格式是否正确?

4

2 回答 2

2

如果响应是,[{"count":0}]那么它看起来像:

post_count.count

应该:

post_count[0].count

因为它是一个包含对象/哈希的数组。

此外,一旦您超越了像这样的简单调用,请考虑使用现有的框架(如restful_jsonAngularJS)来完成繁重的工作。一起使用这两个项目的一个例子是员工培训跟踪器应用程序。还有其他 Javascript 框架也隐藏了这种复杂性。TodoMVC页面中列出了一些示例。而且,如果您编写自己的服务控制器,请考虑使用rails-api 。

于 2013-02-14T20:35:18.907 回答
1

确保 Rails 应用程序使用 JSON 响应,不仅在内容中,而且在标头中:

尝试:

respond_to do |format|
  format.json { render :json=> whatever.to_json }
end

编辑:之前错过了这个,但是当用 jQuery 调用 JSON 让它自动解析时(而不是使用 JSON.parse(response) 使用:

$.getJSON(url, function(){});
于 2013-02-14T20:18:12.623 回答