无法在Javascript中解析来自Rails控制器的JSON响应

时间:2014-06-03 19:43:21

标签: javascript ruby-on-rails json

我正在使用Rails 4应用程序并使用best_in_place AJAX更新用户的地址字段。

AJAX调用成功运行,在我的控制器的更新操作中,我有一个respond_to块,我想吐出用户ID,新更新的地址和布尔值,如果地址有效

respond_to do |format|
  format.json { render :json => { :id => @user.id, :address => @user.address, :address_valid => @user.address_valid } }
end

在我的Javascript中,我试图解析那个JSON。我试过了[' id']和点符号。这是我的JS函数,用于在成功更新后监听JSON:

$('.best_in_place').bind("ajax:success", function (response, data) {
    console.log(response)
    console.log(data)
    console.log(typeof data)
  });
});

控制台可预测地从控制器记录响应和JSON:

jQuery.Event {type: "ajax:success", timeStamp: 1401820902436, jQuery1110046177322673611343: true, isTrigger: 3, namespace: ""…}
{"id":704,"address":"Austin, TX 78751, USA","address_valid":false} 
string

我得到了未定义的'对于data.id.我也尝试过调用## Heading ##

1 个答案:

答案 0 :(得分:0)

所以我已经输入了我的问题,但我想我会发帖,因为我找到了答案,并认为它可能有助于某人:我需要使用

JSON.parse() 
在我的JS中

并将JSON对象设置为变量。从那里,我能够访问JSON对象。

var user = JSON.parse(data) 

从那里,我可以在我的JS中调用user.id,user.address等。