Вставить видео YouTube с помощью Oembed - PullRequest
6 голосов
/ 19 августа 2011

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

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

Ответы [ 5 ]

6 голосов
/ 19 августа 2011

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

0 голосов
/ 23 июня 2016

У меня такая же проблема. Я «решил» это, установив URL-адрес на моем сервере, загрузив JSON, а затем отправив клиенту.

0 голосов
/ 09 марта 2016

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

0 голосов
/ 29 апреля 2013

Используйте версию 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);
        }
    });
0 голосов
/ 19 августа 2011

Я получаю данные json очень хорошо, если я вставляю необработанный URL-адрес трололо в выведенный URL-адрес. Я предполагаю, что, введя закодированную версию в адресную строку, в любом случае происходит декодирование слоя, поэтому попробуйте просто отправить необработанный:

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