簡體   English   中英

IE6 Ajax 與 JQuery

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM