ホームページ > ウェブフロントエンド > jsチュートリアル > jqueryのajax() function_jqueryで渡される中国語文字化けの解決策の紹介

jqueryのajax() function_jqueryで渡される中国語文字化けの解決策の紹介

WBOY
リリース: 2016-05-16 17:48:32
オリジナル
1106 人が閲覧しました
コードをコピー コードは次のとおりです。

$.ajax({
dataType: 'json ',type : 'POST',url : 'http://localhost/test/test.do',data : {id: 1, type: 'Product'},success : function(data){ } } ); 🎜>

問題: バックグラウンド アクション プログラムを送信すると、取得される型が文字化けします

解決策:
方法 1: 前に使用する送信エンコード URI は 2 回エンコードされています。必ず 2 回エンコードする必要があります

1. 次のコードを変更します
コードをコピーします コードは次のとおりです:
data:{id:1, type:encodeURI(encodeURI('product'))}


2 . バックグラウンドアクションで取得した文字列をデコードします
1. String type = request.getParameter(“type”)
2. type = URLDecoder.decode(type, “UTF-8”);
方法 2: Ajax は contentType 属性を構成し、charset=UTF-8 を追加します。
次のパラメーターを ajax メソッドに追加します。
contentType: “application/x-www-form-urlencoded; '' 他のものを使用します。 js フレームワークまたは xhr はほぼ同じです。
ここでのキーは charset=UTF-8 です。これがないと、jQuery の contentType は機能しません。は利用できません


1. テスト環境 jQuery:1.3.2
tomcat:5.5.17

2. テスト方法
1. get メソッドを使用します
server ターミナル Java コード:

コードをコピーします コードは次のとおりです:
文字列名 = new String(request.getParameter("name").getBytes("iso8859-1"),"utf-8");

クライアント js コード:

コードをコピーします コードは次のとおりです:
$.ajax({url: "2. jsp",type: "get",data: {name:" Chinese"},success: function(response){
alert(response);
}});


結果: 正しい表示
コードをコピー コードは次のとおりです:
$.ajax({url: "2.jsp",type: "get ",data: "name=中文",success: function(response){
alert(response);
}});


結果: 文字化け
コードをコピー コードは次のとおりです:
$.get("2.jsp", { name : "中国語" },function(response){
alert(response);
});

結果: 正しい表示

$.get("2.jsp", "name=中文",function(response){
alert(response);
}); >
結果: 文字化けしたコード


2.post メソッド
サーバー側 Java コード:

コードをコピーします
コードは次のとおりです。 request.setCharacterEncoding("UTF-8"); 文字列名 = request.getParameter("name");

クライアント JS コード:


コードをコピーします


結果: 正しく表示されました


コードをコピーします


結果: 正しく表示されました


コードをコピーします
コードは次のとおりです:

$.post("3.jsp", { name: "中文" },function(response){
alert(response);
}); 🎜>
結果: 正しく表示されました


コードをコピー コードは次のとおりです: $.post("3.jsp", "name=中文",function(response){
alert(response);
});



結果: 正しい表示

3. フィルターを使用します

コードをコピーします コードは次のとおりです public void doFilter(ServletRequest request, ServletResponse response,
FilterChainchain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request; .getHeader("X-Requested -With") != null && req.getHeader("X-Requested-With").equalsIgnoreCase("XMLHttpRequest")) {
request.setCharacterEncoding("utf-8");
} else {
request.setCharacterEncoding("gbk");
}
chain.doFilter(リクエスト, レスポンス);


jQuery になります。 ajax を使用する場合、ヘッダーに X-Requested-With を追加します。値は XMLHttpRequest です。フィルターが jQuery の ajax リクエストであると判断した場合、文字エンコーディングは utf8 に設定されます。これにより、送信後の中国語の文字化けの問題を解決できます。 request.setCharacterEncoding(( "UTF-8"); を設定する必要はありません。
getメソッドの中国語文字化け問題については、getメソッドを使用して中国語を投稿するのではなく、投稿することをお勧めします。代わりに ^-^

prototype.js の中国語の処理方法と一貫性を保つために、次のメソッドを使用してヘッダー



コードをコピーします

コードは次のとおりです: $.ajax({ url: "3.jsp", type: "post", data: {name:"中文"},
beforeSend: function(XMLHttpRequest){
XMLHttpRequest.setRequestHeader("RequestType", "ajax"); "開始");
}、
成功: function(data, textStatus){
alert(data);
エラー: function(XMLHttpRequest, textStatus, errorThrown) 🎜>alert("エラー: " textStatus);
},
complete: function(XMLHttpRequest, textStatus){
alert("Complete:" textStatus);



フィルター コードは次のとおりです。





コードをコピー

コード
public void doFilter(ServletRequest request, ServletResponse response,
FilterChainchain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request; req.getHeader("RequestType") != null && req.getHeader("RequestType").equalsIgnoreCase("ajax"))) { request.setCharacterEncoding ("utf-8"); else { request.setCharacterEncoding("gbk"); } chain.doFilter(リクエスト, レスポンス);
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート