【问题标题】:Working with json response from rails使用来自 rails 的 json 响应
【发布时间】:2013-02-14 20:06:55
【问题描述】:

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

我的页面有:

<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 格式是否正确?

【问题讨论】:

    标签: jquery ruby-on-rails json


    【解决方案1】:

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

    post_count.count
    

    应该是:

    post_count[0].count
    

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

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

    【讨论】:

    • 我实际上只是想通了(JSON 响应被包装在一个数组中)并在 Rack 端更改它以发送第一个数组项。无论如何,您的解决方案也很有效,所以我将其标记为正确。谢谢!!
    【解决方案2】:

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

    试试:

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

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

    $.getJSON(url, function(){});
    

    【讨论】:

    • 感谢您的建议,但这实际上是我的 Rails 站点的机架应用程序...我将响应标头设置为 {"Content-Type" => "appication/json"}
    • 再次感谢!我试过 getJSON 但同样的事情发生了。无论如何,根据 jQuery .get() api,我应该能够使用标准的 .get 解析 JSON。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-14
    • 1970-01-01
    • 2021-05-27
    • 1970-01-01
    • 2016-08-06
    • 2017-09-24
    • 2017-12-01
    相关资源
    最近更新 更多