0

この関数では、JSON を使用して Youtube からデータを取得しています。この機能は Chrome と Mozilla で動作しています。しかし、IEでは機能していません。

  function test(url){

      var youtube_id = url.replace(/^[^v]+v.(.{11}).*/,"$1");
     $.getJSON('http://gdata.youtube.com/feeds/api/videos/'+youtube_id+'?v=2&alt=json', function(data) {
      var title = data.entry.title.$t;
      var description = data.entry.media$group.media$description.$t;
      var thumbnail = data.entry.media$group.media$thumbnail[0].url;
       var imgdata = "<img src ='"+thumbnail+"' />";

    alert(title);
      });
      // alert(youtube_id);// Use these variables somewhere

  }

手伝って頂けますか ?

事前にサンクス!!!

4

1 に答える 1

-1

これは、IE (IE 10 まで) がCross-Domain Resource Sharingをサポートしていないためです。

Firefox、Safari、Chrome、Opera などでリクエストを行うと、ブラウザは最初OPTIONSにサーバーにリクエストを送信しAccess-Control-Allow-Origin、ヘッダーを探して、このドメインに対してリクエストを行うことが許可されている外部サイトをブラウザに説明します。 .

gdata API のヘッダーは次のとおりです。

HTTP/1.1 200 OK
X-GData-User-Country: US
Content-Type: application/json; charset=UTF-8
Access-Control-Allow-Origin: *
Expires: Tue, 15 Jan 2013 15:02:28 GMT
Date: Tue, 15 Jan 2013 15:02:28 GMT
Cache-Control: private, max-age=300, no-transform
Vary: *
GData-Version: 2.1
ETag: W/"C0EGQn47eCp7I2A9WhNbEks."
Last-Modified: Tue, 15 Jan 2013 14:53:43 GMT
Transfer-Encoding: chunked
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE

このAccess-Control-Allow-Origin: *ヘッダーは、外部ページ (つまり、アクセスされている API と同じプロトコル、ホスト、およびポートから提供されていないページ) がこのページで呼び出すことが許可されていることを示しています。

ただし、IE は標準を正しくサポートしていません。

ただし、gdata API がサポートする JSONP 標準を使用して、これを回避できます。

URL の末尾に$.getJSONa を含めるように呼び出しを変更します。これは、 JSONP を使用して呼び出しを行いたいこと?を jQuery に説明する方法です。これにより、外部サイトが許可されます。

例えば:

var youtube_id = url.replace(/^[^v]+v.(.{11}).*/,"$1");
     $.getJSON('http://gdata.youtube.com/feeds/api/videos/'+youtube_id+'?v=2&alt=json?', function(data) {
        var title = data.entry.title.$t;
        var description = data.entry.media$group.media$description.$t;
        var thumbnail = data.entry.media$group.media$thumbnail[0].url;
        var imgdata = "<img src ='"+thumbnail+"' />";
        alert(title);
      });
于 2013-01-15T15:07:12.450 に答える