2013-01-15 25 views
0

在這個函數中,我正在使用JSON從Youtube獲取數據。此功能在Chrome和Mozilla中運行。但它在IE中不起作用。getJSON不工作在YouTube的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 

    } 

你能幫我嗎?

Thanx提前!!!

+0

您是否嘗試過使用$阿賈克斯()方法,並設置JSON作爲數據類型? – intuitivepixel

+0

你在ie中得到的錯誤信息是什麼?你想從https域做到這一點?未在Ajax中嘗試過 – tkone

+0

。 –

回答

-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標準規避此問題。

將您的$.getJSON呼叫更改爲在URL末尾包含?。這是你如何解釋jQuery that you'd like to use JSONP來打電話,這允許國外網站。

例如爲:

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); 
     }); 
相關問題