1

昨夜のほとんどを、Flickr API に対して JQuery の「getJSON」メソッドを試すことに費やしました。JQuery ドキュメントからいくつかの例を見て、それらを機能させることができましたが、カスタム API 呼び出しから JSON を読み取ろうとすると、惨めに失敗しました。

切れ端:

これは機能します:

  //JQuery Flickr example code - works!
  $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?&format=json",
  function(data) {
    $.each(data.items, function(i,item){
      alert(item.media.m);
      if ( i == 3 ) return false;
    });
  });

これは失敗します!

  //Custom Flickr API Call - nothing?fail?
  $.getJSON("http://api.flickr.com/services/rest/?method=flickr.photos.search&api_key=c258d8ae4c29bb74da198c6ac3874671&text=Mclaren&per_page=3&format=json&callback=?&nojsoncallback=1",
  function(data) {

    alert(data);


  }).error(function(jqXHR, textStatus, errorThrown) { alert(textStatus + errorThrown); });

2 番目の API 呼び出しは有効なリソースであり、ブラウザー/フィドラーで動作し、JSON コンテンツを表示できますが、私の JS コードではエラーが発生します

"parsererrorError: jQuery18007627279118169099_1345796861535 was not called".

この時点で行き詰まりました。最終的な目標は、返された JSON を処理し、ネストされた配列内の各「写真」オブジェクトを反復処理して、反復中にサブ プロパティに簡単にアクセスできるようにすることです。

[写真インスタンス].id

[写真インスタンス].所有者

[写真インスタンス].secret など...

どんな助けでも大歓迎です。

参照: http://www.flickr.com/services/api/response.json.html

: すべての API キーはテスト用であり、まもなく破棄されます。

4

2 に答える 2

2

Jqueryのドキュメントから:

URL に「callback=?」という文字列が含まれている場合 (またはサーバー側 API で定義されている同様のもの)、要求は代わりに JSONP として扱われます。詳細については、$.ajax() の jsonp データ型の説明を参照してください。

URL に が含まれているためcallback=?、jQuerygetJSON関数は (動的に指定された) JSONP スタイルのコールバック呼び出しを待機しています。ただしnojsoncallback、URL で指定したとおり、サーバーは提供するドキュメントで指定されている標準の JSON コンテンツを送信します。

関数ラッパーを使用せずに生の JSON のみが必要な場合は、パラメータ nojsoncallback を値 1 でリクエストに追加します。

URL から を削除callback=?すれば問題ありません。

于 2012-08-24T09:40:49.307 に答える
0

最後に &nojsoncallback=1 を追加

https://api.flickr.com/services/feeds/photos_public.gne?format=json&nojsoncallback=1

于 2016-10-05T17:34:04.720 に答える