2016-05-23 17 views
0

Ich brauche dieses Skript, um Thumbnails aus dem Google API JSON herausziehen zu können. Aus irgendeinem Grund scheint es nicht zu funktionieren. Befestigt ein jsfiddle als wel.lMiniaturansichten von einem JSON abrufen

 <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

Define * "nicht zu sein scheinen arbeiten" *. Welches Debugging hast du gemacht? Welche Fehler gibt es in der Entwicklerkonsole? –

+0

@squint Ich bekomme keine Fehler. Der Code sollte die Thumbnails aus dem JSON aufnehmen und sie als Bilder in das # Book-Shelf einfügen. + Bearbeitete den Code in der Frage. – JohnDotHR

+0

Setzen Sie '?' Als Callback-Name, so dass jQuery die JSONP-Antwort automatisch behandelt * (dh wenn Sie keine eigene 'handleResponses'-Funktion erstellt haben) * ... 'https://www.googleapis.com/ Bücher/v1/Bände? q = Edgar + Allan + Poe & Rückruf =? ' –

Antwort

1

In der API-URL, links Sie callback=handleResponses, aber das wäre nur dann anwendbar, wenn Sie eine Funktion in Ihrem Code deklariert solche hatte. Mit diesem Parameter würden Sie JSONP (ein JS-Aufruf für diese Funktion) und nicht JSON erhalten.

könnten Sie entfernen, genau das JSON zu bekommen (aber es könnte in Legacy-Browser fehlschlagen, die nicht CORS unterstützen), oder, wie @squint vermuten läßt, ersetzen callback=handleResponses mit callback=? in der API-URL zu lassen jQuery den Rückruf zu behandeln.

Sie müssen auch diese ändern:

in diese:

googleData[i].volumeInfo.imageLinks.thumbnail

Fixed JSFiddle

+0

Perfekt, funktioniert wie ein Charme. @blex – JohnDotHR

+0

@ JohnDotHR: Beachten Sie, dass dies in älteren Browsern fehlschlägt, die CORS nicht unterstützen. Deshalb existiert JSONP. –

+0

@squint Danke für die Info. Ich habe meine Antwort geändert, um das zu berücksichtigen. – blex