2012-02-03 53 views
1

我有一個紅寶石數組,我用render :json => my_arr呈現。然而,在我看來,我認爲它是一個字符串,當我用jQuery.each遍歷它時,它一次只包含一個字符,而不是一次一個數組的元素。render:json =>結果呈現爲字符串,而不是

在我的控制器:

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. 
    }); 
} 

這是昨天的工作,但由於某種原因,現在它的破碎。我查看了以前的版本,但現在也破了。任何想法,我應該如何調試呢?

回答

2

也許你的返回值不被解析爲JSON。試試這個:

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

或嘗試添加dataType選項,設置爲 「JSON」:

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

謝謝,這個工作!我認爲render =>:json是否應該將它作爲json發送給視圖? – stackOverlord 2012-02-03 21:16:13

+0

我相信它也取決於MIME類型,所以有些地方仍然可能出錯。 – 2012-02-03 21:19:02

相關問題