2011-06-30 6 views
0

jsfiddleから自分のサーバーに保存されているjsonファイルにjson要求を行う方法を頭に入れようとしています。flickrの例でjsonpを理解しようとしています

HTML:

<!DOCTYPE html> 
    <html> 
     <head> 
     </head> 
     <body> 
      <div id="images"> 
      </div> 
     </body> 
    </html> 

はjqueryの:

$.getJSON("http://www.shopsheep.com/groupon/json/test.json?jsoncallback=?", function(data) { 
     $.each(data.items, function(i, item) { 
      $("<img/>").attr("src", item.media.m).appendTo("#images"); 
      if (i == 0) { 
       return false; 
      } 
     }); 
    }); 


$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?format=json&jsoncallback=?", function(data) { 
    $.each(data.items, function(i, item) { 
     $("<img/>").attr("src", item.media.m).appendTo("#images"); 
     if (i == 0) return false; 
    }); 
}); 

私はフリッカJSONファイルをダウンロードし、test.jsonとしての私のサーバーにアップロードしました。ブラウザに貼り付けると、フリッカーファイルと同じように戻ります。

しかし、私は画像を表示しようとすると、元のフリッカーの例だけが動作していますか?なぜこれが当てはまるのでしょうか?

http://jsfiddle.net/stofke/DJQ5g

[OK]を私はこれを行う方法を発見しました。 getJSON関数は、ランダムな というコールバック関数名をjsoncallback =に追加します。

:あなたはこのようなcallbackfunctionnameを得ることができるよりも、あなたがあなたのjsonfileは、PHPファイルに変換するので、もし、この関数の名前を知っている、もちろん必要がある。このcallbackfunctionであなたのJSONファイルをラップするために、この jQuery160188050875203142_1309437718540&_=1309437718551 のようなもの
<?php echo $_GET["jsoncallback"];?>(
    ADD JSON CONTENT HERE 
) 

このPHPファイルは、GET変数を使用してコールバック関数の名前を取得し、jsonコンテンツをそのファイルにラップします。これはうまく動作します。

答えて

1

JSONファイルに関数名がありません。関数名で始まる必要があります。 http://api.flickr.com/services/feeds/photos_public.gne?format=jsonが表示されている場合は、jsonFlickrFeedで始まります。

あなたのJSONは次のようにする必要があります:

callback({ 
     "title": "Uploads from everyone", 
     "link": "http://www.flickr.com/photos/", 
     "description": "", 
     "modified": "2011-06-29T21:43:16Z", 
     "generator": "http://www.flickr.com/", 
     "items": [ 
     {.... 

はたぶん、あなたはJSONPについての詳細を理解する必要があります。 http://en.wikipedia.org/wiki/JSONP

+0

まだわかりません。 jsonFlickrFeedはFirefoxとのリンクを開くと確かにそこにありますが、Chromeでは表示されません。 私が追加するコールバック関数は、コールバックとして返されません。 – Stofke

+0

ああ、私はjqueryの呼び出しを参照してください私は動的にjqueryによって提供されるコールバック関数でラップされたjsonを生成する必要があります – Stofke

関連する問題