1

JSONデータを返すFlickr APIから情報を取得するためのajax呼び出しがあります。ビューに JSON データの値を表示したいと考えています。これを行うには、jQuery でいくつかの innerHTML を編集します。私が抱えている問題は、データが未定義であるため、スコープの問題のように見えることです。

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 を編集して render を実行しようとすると<%=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
4

1 に答える 1

3
 var result = jQuery.parseJSON(data);

これを行う必要はありません。datatype:JSON既にデータを解析しているためです

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

これはあなたを助けるかもしれません

于 2012-09-25T16:01:22.423 に答える