jquery ajax post提交數據亂碼

字號:


    在用jquery處理html5的應用的時候,一直在firefox下測試都正常,用戶用pad訪問的時候說有亂碼,
    自己試驗了下果然,后發(fā)現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,保持編碼的統(tǒng)一,包括文件編碼,數據庫編碼,網頁content-type編碼
    檢查一下<meta http-equiv=”content-type” content=”text/html; charset=utf-8″ />
    建議中文都是用utf-8,使用gbk/gb2312有可能會出現亂碼
    2,使用post來發(fā)送而不是get
    get方法是會通過鏈接來傳遞參數,而且會自動urlencode(編碼),而各個瀏覽器編碼的方式可能不太一樣。使用post可以避免這種情況。
    3,通過在js前端escape編碼再發(fā)送,然后后臺解碼取得數據
    這些可以在網上搜索
    4,在全局設定contenttype,指定編碼
    因為jquery ajax是使用utf-8來編碼發(fā)送數據的,ie在發(fā)送時卻沒加上charset=utf-8,從而導致亂碼(ie默認使用iso-8859-1編碼)
    $.ajaxsetup({
    contenttype: application/x-www-form-urlencoded; charset=utf-8