渲染:json =>结果呈现为字符串

时间:2012-02-03 21:12:35

标签: jquery ruby-on-rails

我在ruby中使用render :json => my_arr渲染了一系列哈希值。但是,在我看来,我把它看作一个字符串,当我用jQuery.each迭代它时,它一次包含一个字符而不是一次一个元素。

在我的控制器中:

logger.debug(my_arr) # prints [{"foo1"=>"bar1”},{“foo2”=>”bar2”}]
render :json => my_arr

在我看来:

function query_facebook_for_roommate(){
    $.ajax({
        type: "GET",
        url: "send_to_my_controller",
        success: function(data){
           //I see data: "[{"foo1"=>"bar1”},{“foo2”=>”bar2”}]" in the chrome debugger
           jQuery.each(data, display_result) 
           //This iterates over each character, eg: [, {, " etc. instead of each element {"foo1"=>"bar"}, {"foo2"=>"bar2"} etc.
    });
}

这在昨天有效,但由于某种原因现在已经坏了。我查看了之前的修订版,但现在它们也被破坏了。关于我应该如何调试它的任何想法?

1 个答案:

答案 0 :(得分:2)

也许您的返回值未被解析为JSON。试试这个:

success: function(data){
  var parsed_data = $.parseJSON( data );
  jQuery.each( parsed_data, display_result );
}

或尝试添加dataType选项,设置为“json”:

$.ajax({
  ...
  dataType: 'json'
  ...
});