Я хочу использовать oembed для получения кода встраивания из ссылок на YouTube с помощью jQuery:
var url = "http://www.youtube.com/watch?v=iwGFalTRHDA"; url = encodeURIComponent(url); $.getJSON('http://youtube.com/oembed?url='+url+'&format=json', function(data) { console.log(data); });
Ну, я не получаю никаких данных.
Забавно, что если яперейдите по ссылке, и я получу правильный ответ:
http://www.youtube.com/oembed?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DiwGFalTRHDA&format=json`
приводит меня к
{ provider_url: "http://www.youtube.com/" title: "Trololo" html: "<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/iwGFalTRHDA?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/iwGFalTRHDA?version=3" type="application/x-shockwave-flash" width="425" height="344" allowscriptaccess="always" allowfullscreen="true"></embed></object>" author_name: "KamoKatt" height: 344 thumbnail_width: 480 width: 425 version: "1.0" author_url: "http://www.youtube.com/user/KamoKatt" provider_name: "YouTube" thumbnail_url: "http://i2.ytimg.com/vi/iwGFalTRHDA/hqdefault.jpg" type: "video" thumbnail_height: 360 }
Я также использовал плагин jquery oembed, но опция onError всегда выбрасывается, даже еслизапрос был успешным.
Я действительно с нетерпением жду некоторых идей ...
На самом деле проблема в том, что вы нарушаете ту же политику происхождения браузера, что и междоменный запрос ajax. Есть несколько вариантов работы - к сожалению, лучший JSONP не реализован на YouTube . Следующим лучшим является использование Flash для транспорта. Используется утилитой YUI-IO . Также вы можете увидеть Jquery предложения здесь .
У меня такая же проблема. Я «решил» это, установив URL-адрес на моем сервере, загрузив JSON, а затем отправив клиенту.
У меня была похожая проблема, оказалось, что параметр строки запроса url использовал домен www.youtube.com, тогда как мой вызов конечной точки oembed использовал youtube.com/oembed.Использование www.youtube.com/oembed решило проблему.
url
www.youtube.com
youtube.com/oembed
www.youtube.com/oembed
Используйте версию json-c: https://developers.google.com/youtube/2.0/developers_guide_jsonc
var id = "iwGFalTRHDA"; $.ajax({ url: "https://gdata.youtube.com/feeds/api/videos/" + id + "?v=2&alt=jsonc", dataType: "jsonp", success: function (data) { console.log(data); } });
Я получаю данные json очень хорошо, если я вставляю необработанный URL-адрес трололо в выведенный URL-адрес. Я предполагаю, что, введя закодированную версию в адресную строку, в любом случае происходит декодирование слоя, поэтому попробуйте просто отправить необработанный:
http://youtube.com/oembed?url=http://www.youtube.com/watch?v=iwGFalTRHDA&format=json