Javascript 将JSON与jRails一起使用

Javascript 将JSON与jRails一起使用,javascript,jquery,ruby-on-rails,json,jrails,Javascript,Jquery,Ruby On Rails,Json,Jrails,我目前正试图通过jrail在我的应用程序中使用AJAX。我试图从我的控制器返回一个JSON对象,然后在Javascript中解析它。我正在使用json2.js进行解析 以下是我目前拥有的代码: function getSomething() { $.ajax({ type: "GET", url: "map/testjson", success: function(data) { var myData = JSON.

我目前正试图通过jrail在我的应用程序中使用AJAX。我试图从我的控制器返回一个JSON对象,然后在Javascript中解析它。我正在使用json2.js进行解析

以下是我目前拥有的代码:

function getSomething()
{
    $.ajax({
        type: "GET",
        url: "map/testjson",
        success: function(data) {
            var myData = JSON.parse(data[0]);
            window.alert(myData.login);
        }
    });
}
在控制器中:

class Map::MapController < ApplicationController
  def index
  end

  def testjson
    @message = User.find(:all)
    ActiveRecord::Base.include_root_in_json = false
    respond_to do |w|
      w.json { render :json => @message.to_json }
    end

  end
end
class Map::MapController@message.to_json}
终止
终止
终止
window.alert只显示“未定义”(不带tics)

但是,如果我将javascript更改为window.alert(data)(控制器返回的原始对象),我会得到:

[{“salt”:“aSalt”,“name”:“, “创建时间”:“2010-03-15T02:34:25Z”,“记住令牌到期时间”: 空,“加密密码”:“aPassword”, “更新时间”:“2010-03-15T02:34:25Z”,“id”:1,“记住令牌”:空, “登录”:“ZGRIG2”,“电子邮件”:zach@zach.com“}]

如果我看得对的话,这看起来像一个大小为1的数组,但我已经尝试了我能想到的数据对象上的几乎所有JSON.parse组合,但似乎没有任何效果

你知道我做错了什么吗

编辑
如果Users表中有多行,这似乎可以正常工作。

我可以看出代码中有两个问题

最好使用$.getJSON来执行JSON请求

  • jQuery仍然是JSON的解析器。。。然后在回调函数中,您只需执行以下操作:
  • $(数据)。每个(功能(i,用户){ //您喜欢对用户做什么 });

  • 在rails响应中有一个错误,不是w.json{render:json=>@message.to_json},而是w.json{render:json=>@message}。whout“.to_json”

  • 希望有帮助。

    当有多行时,您需要处理的是json格式的对象字符串,而不是json对象表示。 真的对不起我英语,我想更好的解释

    如果@message是一个空对象,因为没有任何消息,对json的渲染不会产生任何结果,当你在JS中时,你会遇到问题,因为你没有任何响应。您必须检查@message对象。也许你能做到:

    w、 json{render:json=>(@message.nil?)?0:@checkpoint}


    然后,在回调函数中,您必须检查您的数据响应是“0”(如字符串)还是一个对象。

    Zachary,您使用的是什么版本的jQuery?jRails附带的似乎是1.3.2。我确实删除了“.to_json”部分,但它应该是可选的。处理每个名称-值对的显式回调函数也应该是可选的……奇怪的是,当有多行被呈现为json时,我的代码工作正常。