jQuery.support.cors = true;
http://blog.csdn.net/jupiter37/article/details/25694289
jQuery ajax跨域調用出現No Transport
IE8下出現的問題,chrome正常,找到了這篇文章
http://www.cnblogs.com/Curious/p/3423275.html
//之前沒有加這句老是提示no transport,我沒去深想。
jQuery.support.cors = true;
$.ajax
({
type: "POST",
contentType: "application/x-www-form-urlencoded",
dataType: "html",
url: "http://www.*****.com", //這里是網址
success:function(data){alert(data);},
timeout:30000,
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
jquery.support.cors只是對CORS協議的一種實現,具體可以看jQuery的源代碼,這里不多說。
附上幾個很好的參考資料:
http://newhtml.net/using-cors/
http://www.kimhou.com/?p=222
http://blog.csdn.net/nuccch/article/details/43086843
解決IE下返回json數據提示文件保存到問題
在IE9,10,11下,當服務器端返回數據格式為json,且明確設置Content-Type為”application/json;charset=utf-8“時,會提示文件下載。如圖所示:
解決辦法是修改Content-Type為”text/html;charset=utf-8“,然后在前端對數據做一次JSON編碼再進行使用。
該問題只在IE系列下存在,在FF和Chrome上均正常。
詳見:http://www.oschina.net/question/223750_123703
http://www.shagua.name/post/17.html
JQUERY獲取JSON時IE瀏覽器提示UNDEFINED錯誤的解決辦法
於是,我用Chrome瀏覽器分別抓取了可以正常交互的JSON和產生錯誤的JSON數據,然后對它們的Header部分進行對比:
這是報錯JSON的Header部分:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json
Transfer-Encoding: chunked
Date: Mon, 23 Jun 2014 13:19:21 GMT
以及(添加utf8編碼后):
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=utf8
Transfer-Encoding: chunked
Date: Mon, 23 Jun 2014 13:19:21 GMT
這是正常JSON的Header部分:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 920
Date: Mon, 23 Jun 2014 13:27:10 GMT
除去HTTP版本號、狀態碼、服務器名稱以及響應時間,真正不同的只有兩行,即第三行和第四行。我隨后經過查閱資料得知,“Transfer-Encoding: chunked”和“Content-Length: XXX”是兩種不同的傳輸方式,后者傳輸的內容長度是固定的,而前者,則適用於不斷向瀏覽器端輸出內容的場景。所以,真相只有一個——編碼問題!!於是我把編碼中的“utf8”改成了“utf-8”,再調試,問題果然華麗麗地解決了!
因此,原因就是 —— 第一個Header中沒有添加字符集;第二個Header中把“UTF-8”字符集的格式寫錯了,舊版的IE瀏覽器不能識別編碼,僅此而已。所以如果你在寫程序的過程中也遇到了JSON變量是“undefined”的情況,不妨先去看看是不是編碼出了問題,因為舊版IE瀏覽器對編碼格式的書寫太敏感了。
