[jQuery] 關於jQuery的AJAX不兼容IE的解決辦法

在使用jQuery的AJAX:get方法去檢測數據是否存在時,會發現IE會出現不兼容的狀況。

用AJAX:post方法時,使用Chrome/FireFox/IE均能出現正確的結果,可是在使用AJAX:get方法時,IE卻不能返回正確的結果。

難道是數據超出了get方法的限制的長度,這個也不可能,我總共才傳了一點點數據。排除。

網上一些網友說是IE緩存的問題,在請求數據後邊加上隨機數就行,好比加上時間數new Date().getTime()。
先前的代碼中我已經添加了隨機數,用的是「Math.random()」也不行。難道用時間比較靠譜?

那就改爲獲取時間試試,在參數後加「new Date().getTime()」後反覆測試仍是不行,真是百思不得其解!這個錯誤也排除了。

反覆查看手冊後發現請求的數據格式仍是有一種JSON格式,如{foo:["bar1", "bar2"]} ,而後就按照這種格式書寫,還真的返回了正確的查詢結果。真不知道IE還有這點要求。(完)

先前的格式:
type: "get",
data: "bid="+my_bid+"&name_cn="+name_cn+"&timeStamp="+new Date().getTime(),
改進後格式:
type: "get",
data: {'bid':my_bid,'name_cn':name_cn,'timeStamp':new Date().getTime()},

在jQuery手冊中是這樣描述的:
data Object,String
發送到服務器的數據。將自動轉換爲請求字符串格式。GET 請求中將附加在 URL 後。
查看 processData 選項說明以禁止此自動轉換。必須爲 Key/Value 格式。
若是爲數組,jQuery 將自動爲不一樣值對應同一個名稱。如 {foo:["bar1", "bar2"]} 轉換爲 "&foo=bar1&foo=bar2"。


代碼片斷:

var siteUrl="http://blog.sina.com.cn/cnwyt"; 
jQuery.ajax({
type: "get",
url: siteUrl+"cosmetics/product/ajax_check?",
//data: "bid="+my_bid+"&name_cn="+name_cn+"&timeStamp=" + new Date().getTime(),
data: {'bid':my_bid,'name_cn':name_cn,'timeStamp':new Date().getTime()},
dataType: 'json',
error: function (err) { alert('網絡故障,請與管理員聯繫!') },
success: function (message) {
if(message!=false){
//ture的代碼
}else{
//false的代碼
}
});

參考連接:

jQuery 的 .get和.post和.ajax方法IE的兼容問題 
http://blog.csdn.net/muziduoxi/article/details/7541800

jquery ajax在IE下失效
http://www.im87.cn/blog/256
相關文章
相關標籤/搜索