7

oembedを使用して、jQueryを使用してYouTubeリンクから埋め込みコードを取得したいと思います。

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オプションが常にスローされます。

私は本当にいくつかのアイデアを楽しみにしています...

4

5 に答える 5

6

実際の問題は、クロスドメインajaxリクエストでブラウザの同一生成元ポリシーに違反していることです。いくつかの潜在的な回避策があります-残念ながら、最高のJSONPはYouTubeによって実装されていません。次善の策は、トランスポートにフラッシュを使用することです。これはYUI-IOユーティリティによって使用されます。また、ここでJqueryの提案を見ることができます。

于 2011-08-19T18:19:46.067 に答える
1

生のトロロロURLをoembedURLに埋め込んだ場合、jsonデータは問題なく取得されます。エンコードされたバージョンをアドレスバーに入力すると、とにかくデコードのレイヤーが実行されると推測しているので、生のものを送信してみてください。

http://youtube.com/oembed?url=http://www.youtube.com/watch?v=iwGFalTRHDA&format=json
于 2011-08-19T16:13:39.767 に答える
0

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);
        }
    });
于 2013-04-29T09:44:36.637 に答える
0

同様の問題が発生しました。urlクエリ文字列パラメーターがwww.youtube.comドメインを使用していたのに対し、oembedエンドポイントへの呼び出しはを使用していたことがわかりましたyoutube.com/oembed。使用www.youtube.com/oembedすると問題が修正されました。

于 2016-03-09T11:09:35.930 に答える
0

同じ問題が発生しました。サーバーのURLにJSONをダウンロードさせてからクライアントに送信することで、これを「解決」しました。

于 2016-06-23T17:49:00.143 に答える