jquery ajax之post提交資料chrome和ie亂碼

來源:互聯網
上載者:User

在用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"
});

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.