2016-05-23 2 views
0

Мне нужен этот сценарий, чтобы вытаскивать эскизы из API Google JSON, по какой-то причине он, похоже, не работает. Прикрепленный jsfiddle в wel.lПолучение эскизов из JSON

 <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 * "кажется, не работает" *. Какую отладку вы сделали? Какие ошибки возникают в консоли разработчика? –

+0

@squint У меня нет ошибок. Код должен захватить эскизы из JSON и разместить их как изображения внутри # книжной полки. + Отредактировал код в вопросе. – JohnDotHR

+0

Установите '?' Как имя обратного вызова, чтобы jQuery автоматически обрабатывал ответ JSONP * (то есть, если вы не создали свою собственную функцию handleResponses) * ... 'https://www.googleapis.com/ книги/v1/volume? q = edgar + allan + poe & callback =? ' –

ответ

1

В URL API, вы оставили callback=handleResponses, но это было бы только в том случае, если у вас была такая функция, объявленная в вашем коде. С помощью этого параметра вы получите JSONP (вызов JS для этой функции), а не JSON.

Вы можете просто удалить, что, чтобы получить JSON (но это, возможно, не в устаревших браузерах, которые не поддерживают CORS), или, как @squint предлагает заменить callback=handleResponses с callback=? в URL API, чтобы позволить JQuery обработки обратного вызова.

Кроме того, необходимо изменить:

в этом:

googleData[i].volumeInfo.imageLinks.thumbnail

Fixed JSFiddle

+0

Идеально, работает как шарм. @blex – JohnDotHR

+0

@JohnDotHR: Имейте в виду, что это не удастся в старых браузерах, которые не поддерживают CORS. Вот почему существует JSONP. –

+0

@squint Спасибо за информацию. Я изменил свой ответ и включил это. – blex

Смежные вопросы