jquery ajax post提交數據亂碼

在用jquery處理html5的應用的時候,一直在firefox下測試都正常,用戶用pad訪問的時候說有亂碼,
本身試驗了下果真,後發現chrome和ie內核下都是有此問題,此問題設置了頁面屬性爲utf-8時候,只有firefox是傳的charset=utf-8的頭文件
chrome和ie都沒有指定,因此出現亂碼問題.
解決方法:
複製代碼代碼以下:

$.ajaxSetup({
  contentType: "application/x-www-form-urlencoded; charset=utf-8"
});
$.post("test.php", { name: "i5a6", time: "2pm" },
   function(data){
     process(data);
   }, "json");
 

或者使用:
複製代碼代碼以下:

$.ajax({
  url:url,
  type:"POST",
  data:data,
  contentType:"application/x-www-form-urlencoded; charset=utf-8",
  dataType:"json",
  success: function(){
    ...
  }
})
 

推薦使用第一種,不過也是根據本身的實際狀況看的,有人推薦用 encodeURIComponent 作字符轉換
總結一下ajax 提交數據亂碼一些經驗
爲了不亂碼,能夠作到如下幾步
解決方法
1,保持編碼的統一,包括文件編碼,數據庫編碼,網頁content-type編碼
檢查一下<meta http-equiv=」content-type」 content=」text/html; charset=UTF-8″ />
建議中文都是用UTF-8,使用gbk/gb2312有可能會出現亂碼
2,使用post來發送而不是get
get方法是會經過連接來傳遞參數,並且會自動urlEncode(編碼),而各個瀏覽器編碼的方式可能不太同樣。使用post能夠避免這種狀況。
3,經過在js前端escape編碼再發送,而後後臺解碼取得數據
這些能夠在網上搜索
4,在全局設定contentType,指定編碼
由於jquery ajax是使用utf-8來編碼發送數據的,ie在發送時卻沒加上charset=utf-8,從而致使亂碼(IE默認使用iso-8859-1編碼)
複製代碼代碼以下:
$.ajaxSetup({  contentType: "application/x-www-form-urlencoded; charset=utf-8" });
相關文章
相關標籤/搜索