Не удалось извлечь видео с YouTube через json

Иногда я получаю эту ошибку при извлечении видео с YouTube с помощью json, вот пример:

XMLHttpRequest не может загрузить https://gdata.youtube.com/feeds/api/users/IcarusTouma?&alt=json. Источник http://localhost не разрешен Access-Control-Allow-Origin.

Я пробовал использовать jsonp, но youtube не принимает jsonp.

Так что извлекайте видео с YouTube.

$. getJSON ('https://gdata.youtube.com/feeds/api/videos/' + id_video + '? & alt = json', function (data) {
if (typeof data! == "undefined" && data)
{
     var title = data ['entry'] ['title'] ['$ t'];
     var thumb = data ['entry'] ['media $ group'] ['media $ thumbnail'] [0] ['url'];
     var title = data ['entry'] ['author'] [0] ['name'] ['$ t'];
     $. getJSON ('https://gdata.youtube.com/feeds/api/users/' + author + '? & alt = json', function (data) {

     author_thumbnail var = data ['entry'] ['media $ thumbnail'] ['url'];
     $ ('.items').append(html_carousel (thumb, title, author_thumbnail, author, 5,' youtube ', id_video, author'));

     });
}
});

person John    schedule 04.03.2012    source источник
comment
попробуйте добавить & callback =? в вашем URL.   -  person DG3    schedule 04.03.2012
comment
если удаленный сервер не отвечает в формате JSONP, вы не можете получить с него данные.   -  person Joseph    schedule 04.03.2012


Ответы (2)


Только что проверив справочную документацию по API данных YouTube, как для JSON, так и для новых форматов JSON-C, они оба принимают JSON-P, что позволяет указать обратный вызов с помощью строкового параметра callback GET. Эта ссылка продемонстрирует, что это правда:

https://gdata.youtube.com/feeds/api/videos?q=baseball&v=2&alt=jsonc&callback=functionName

В этом случае длинный возврат объекта JSON заключен в вызов функции functionName. Следующий URL - это тот же вызов, но в более старом (и несколько устаревшем) формате JSON:

https://gdata.youtube.com/feeds/api/videos?q=baseball&v=2&alt=json&callback=functionName

Данные немного другие, но тот же набор результатов, заключенный в другой вызов functionName. Эти вызовы были запросами на получение видео, соответствующих параметру поиска («бейсбол»). Но я уверен, что просматриваю их справочные документы (для JSON-C и JSON форматы) даст то, что вам нужно для правильной работы, в виде вызова JSONP с указанием обратного вызова в строке запроса.

person Paul Bruno    schedule 04.03.2012

Используйте dataType: 'jsonp' в вызове ajax.

См .: http://jsfiddle.net/D4tEk/

person codef0rmer    schedule 04.03.2012
comment
Похоже, этот API мертв, возвращает HTTP 410 GONE - person Charlie; 15.04.2016