jquery ajax postコミットデータ文字化け

1669 ワード

html 5のアプリケーションをjqueryで処理するときは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(){
    ...
  }
})
 

おすすめは1つ目ですが、実際に自分の状況を見て、encodeURIComponentで文字変換をすることをお勧めする人もいます
ajaxがデータを提出して文字化けした経験をまとめます
文字化けしを避けるためには、以下のステップが可能です
解決策
1、ファイル符号化、データベース符号化、ウェブページcontent-type符号化を含む符号化の統一を維持する
チェックして
中国語はすべてUTF-8を使うことを提案して、gbk/gb 2312を使って文字化けして現れるかもしれません
2,getではなくpostを使用して送信
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"
});