這是因爲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);
});
您是否嘗試過使用$阿賈克斯()方法,並設置JSON作爲數據類型? – intuitivepixel
你在ie中得到的錯誤信息是什麼?你想從https域做到這一點?未在Ajax中嘗試過 – tkone
。 –