天天看點

ajax以post方式送出資料出現亂碼,jquery ajax post送出資料亂碼

這篇文章主要介紹了在用jquery處理html5的應用的時候,一直在firefox下測試都正常,使用者用pad通路的時候說有亂碼,自己試驗了下果然,後發現chrome和ie核心下都是有此問題,此問題設定了頁面屬性為utf-8時候,隻有firefox是傳的charset=utf-8的頭檔案,需要的朋友可以參考下

在用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({

,

type:"POST",

data:data,

contentType:"application/x-www-form-urlencoded; charset=utf-8",

dataType:"json",

success: function(){

...

}

})

推薦使用第一種,不過也是根據自己的實際情況看的,有人推薦用 encodeURIComponent 做字元轉換

總結一下ajax 送出資料亂碼一些經驗

為了避免亂碼,可以做到以下幾步

解決方法

1,保持編碼的統一,包括檔案編碼,資料庫編碼,網頁content-type編碼

檢查一下

建議中文都是用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"

});

更多資訊請檢視IT技術專欄