[英]IE6 Ajax with JQuery
我正在嘗試將 REST 網絡服務中的數據感染到 HTML 頁面中。 問題是我正在努力工作的 Internet Explorer 6(這是我在 XP SP3 上的目標站)。 這是使用的代碼:
$.ajax({
type: "GET",
contentType:"application/json; charset=utf-8",
dataType : 'json',
url: "https://jsonplaceholder.typicode.com/posts/1",
success: function(data) {
alert(data);
},
complete: function(xhr) {
alert(xhr.status+" "+xhr.responseText);
}
});
在 Firefox 52 ESR 上測試:成功和完整的功能都有效。
在 Chrome 49 上:成功工作,完成被調用,但 xhr.status 為 0 並且 xhr.responseText 為空。
在 IE6 上,根本不調用 success 並調用 complete,但 xhr.status 為 0 且 xhr.responseText 未定義。
嘗試了在 SOF 上已經回答的問題,例如刪除額外的逗號、添加 dataType ......但在 IE6 上仍然沒有成功。
我們怎樣才能做到一勞永逸?
謝謝
IE6 很古老,它不支持 CORS (甚至不支持XDomainRequest
)。
在 IE6 中無法使用 JavaScript 執行跨域 RESTful HTTP 請求。
如果要執行跨域請求,則需要使用其他(非 RESTful)方法,例如 JSONP。
正如 Quentin 所說,IE 6/7 不支持發送 CORS 請求,您可以查看此博客。
您可以參考以下代碼來使用 JSONP 。
// Using JSONP
$.ajax({
url: "<request url>",
jsonp: "callback",
// Tell jQuery we're expecting JSONP
dataType: "jsonp",
data: {
q: "select title,abstract,url from search.news where query=\"cat\"",
format: "json"
},
// Work with the response
success: function( response ) {
console.log( response ); // server response
}
});
此外,請查看這篇文章:
Internet Explorer 9 和更早版本忽略 Access-Control-Allow 標頭,默認情況下禁止 Internet 區域的跨域請求。 要啟用跨域訪問 go 到工具-> Internet 選項-> 安全選項卡,單擊“自定義級別”按鈕。 找到雜項 -> 跨域訪問數據源設置和 select “啟用”選項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.