Размещения видео с YouTube с помощью oembed

Я хочу использовать 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);
});

Ну я не получаю никаких данных.

забавно, что если я перейду к url-адресу, я получу правильный ответ:

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 всегда выбрасывается, также если запрос был успешным.

Я действительно с нетерпением жду некоторых идей...

5 ответов


на самом деле проблема в том, что вы нарушаете ту же политику браузера origin с междоменным ajax-запросом. Там несколько потенциальных рабочих работ - к сожалению, лучшие JSONP, не реализован YouTube. Следующим лучшим является использование Flash для транспорта. Это используется утилита YUI-IO. Также вы можете увидеть предложения Jquery здесь.


Я получаю данные json просто отлично, если я вставляю необработанный url trololo в url oembed. Я предполагаю, что, введя кодированную версию в адресную строку, в любом случае выполняет слой декодирования, поэтому попробуйте просто отправить raw:

http://youtube.com/oembed?url=http://www.youtube.com/watch?v=iwGFalTRHDA&format=json

используйте версию 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);
        }
    });

у меня была аналогичная проблема, оказывается, что url параметр строки запроса использовал www.youtube.com домен, тогда как мой вызов конечной точки oembed использовал youtube.com/oembed. Используя www.youtube.com/oembed Исправлена проблема.


получил ту же проблему. Я "решил" это, имея url-адрес на моем сервере, загрузите JSON, а затем отправьте его клиенту.