2016-05-23 14 views
0

Google API JSONからサムネイルを取り出せるようにするにはこのスクリプトが必要ですが、なんらかの理由で動作していないようです。 APIのURLでwel.lJSONからサムネイルを取得

 <div id="book-shelf"> 

     </div> 
        $(function() { 
    var i=0; 
    var googleApi = "https://www.googleapis.com/books/v1/volumes?q=edgar+allan+poe"; 
    var googleData; 
    $.getJSON(googleApi, function(json) { 
     googleData = json; 

     setData() 
    }); 

    function setData(){ 
     var j = googleData.length > (i + 9) ? (i + 9) : googleData.length; 
     for (; i < j; i++) { 
      var googleThumb = googleData[i].thumbnail; 
      var img = $('<img style="width: 250px; height: 250px;" src="' + googleThumb + '"/>') 
      $('#book-shelf').append(img); 
     } 
    }  

    $('#load').click(function() { 
     setData(); 
    }); 
}); 



     https://jsfiddle.net/mo7skwrj/ 
+0

は、* * "動作していないようです" を定義します。何のデバッグをしましたか?デベロッパーコンソールにはどのようなエラーがありますか? –

+0

@squint間違いはありません。コードはサムネイルをJSONから取得し、#ブックシェルフ内にイメージとして配置する必要があります。 +質問のコードを編集しました。 – JohnDotHR

+0

jQueryがJSONPレスポンスを自動的に処理するようにコールバック名として '?'を設定します*(あなた自身の 'handleResponses'関数を作成しなかった場合)* ...' https://www.googleapis.com/ books/v1/volumes?q = edgar + allan + poe&callback =? ' –

答えて

1

としてjsfiddleを添付、あなたはcallback=handleResponsesを残していますが、あなたのコード内で宣言したような機能を持っていた場合には適用可能です。このパラメータを使用すると、JSONではなくJSONP(その関数へのJS呼び出し)を受け取ります。

jQueryのコールバックを処理させるために、APIのURLにcallback=?callback=handleResponsesを置き換え、@squintが示唆するように、あなただけのJSONを取得することを削除することもできます(それはCORSをサポートしていないレガシーブラウザで失敗することがあります)、または。この中

::また、この変更する必要が

googleData[i].volumeInfo.imageLinks.thumbnail

Fixed JSFiddle

+0

パーフェクト、魅力的な作品。 @blex – JohnDotHR

+0

@JohnDotHR:CORSをサポートしていないレガシーブラウザではこれが失敗することに注意してください。それがJSONPが存在する理由です。 –

+0

@squint情報をありがとう。私はそれを含めるために私の答えを変更しました。 – blex

関連する問題