2013-01-15 29 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); 
     }); 
相关问题