2012-09-25 148 views
1

我有一個ajax調用來從Flickr API中獲取返回JSON數據的信息。我想在我的視圖中顯示來自JSON數據的值。我通過用jQuery編輯一些innerHTML來做到這一點。我遇到的問題是數據未定義,所以它看起來像一個範圍問題。從Rails中的AJAX調用渲染JSON

photo.js

jQuery(function() { 
    $('#<%=p[:id]%>').click(function (e) { 

    //ajax call to fetch photo info 

    var fetch_id = '<%=p[:id]%>'; 
    var fetch_secret = '<%=p[:secret]%>'; 

    $.ajax({ 
     type: 'GET', 
     url: '/photos/fetch_info', 
     dataType: 'json', 
     data: { 'id' : fetch_id, 'secret' : fetch_secret }, 
     success: function(data){ 

     console.log(data) //returns Object 
     console.log(data.title) //returns appropriate title 

     //edit innerHTML of basic_modal 
     $('.basic_modal').html(
      "<div id='modal_image'><%= escape_javascript(image_tag p[:url]) %></div><div id='photo_title'><%=data.title %></div>" 
     ); 

     //load modal 
      $('.basic_modal').modal({ 
      overlayClose:true 
     }); 

     } //end success: function(result) 
    }); 

當我打印data.title安慰,我得到了適當的標題。但是,當我嘗試編輯HTML並呈現<%=data.title %>時,出現未定義的變量/方法錯誤。

任何提示如何我可以在視圖中顯示我的模態數據?

這裏是我的控制器:

def fetch_info 

    @info = flickr.photos.getInfo(:photo_id => params[:id], :secret=> params[:secret]) 

    respond_to do |format| 
    format.json { render :json => @info } 
    end 

end 

回答

3
var result = jQuery.parseJSON(data); 

您DONOT需要這樣做,因爲datatype:JSON已經解析數據

$('.basic_modal').html(
      "<div id='modal_image'><%= escape_javascript(image_tag p[:url]) %> 
</div><div id='photo_title'><%="+data.title+" %></div>" 
     ); 

這可能幫助你

+0

我解決了這個我的問題上面。我打印它到控制檯,看到它返回NULL,所以我想它已經被解析。爲了便於閱讀並刪除混淆,我會將其刪除。 – Huy

+0

'<%=「+ data.title +」%>'在我的視圖中顯示字符串「+ data.title +」,而不是實際的標題。 – Huy

+0

你想展示什麼? – StaticVariable