以前 Sina Blog で書きましたjs が AJAX を呼び出すときの Get と post のコードが文字化けする問題の解決策 ですが、データのやり取りに ajax を使用すると、js コードを使用する方が面倒になります。 js---jQuery の。
Web サイトを設計する場合、登録、ログイン、ページング検索のいずれであっても、必要なページ データを取得するためにパラメーターをサーバーに送信する必要があります。ページの更新によるユーザーの苦痛を軽減するために、ajax が誕生しました。しかし、初心者がプロジェクトを開発すると、中国語の文字化けという非常に厄介な問題に遭遇することになります。
以下では、簡単な例を使用して、文字化けが発生する場所とその解決方法を説明します。
この例では、主にユーザーが登録するときにユーザー名が正しい (既に存在する) かどうかを実装し、フォーカスがユーザー名のテキストから離れると、ユーザー名が非同期で送信され、サーブレットが結果を抽出して判断し、結果を に返します。対応するプロンプトを作成するページ。
最初のステップは、新しい Web プロジェクト (デフォルトの GBK 形式) を作成し、jQuery_Ajax という名前を付けることです。 WebRoot ディレクトリに新しい js ファイル パッケージを作成し、その中に jquery-1.4.4.js を配置します。
2 番目のステップは、src の下にサーブレット パッケージを作成し、Vali.java を作成することです。
パッケージ サーブレット;
import java.io.PrintWriter; import javax.servlet .ServletException;
import javax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
@ Override
protectedvoid service(HttpServletRequest request, HttpServletResponse response)
throwsServletException, IOException {
StringuserName = URLDecoder.decode(request.getParameter("userName"),"utf-8");
System.out.println(userName);
response.setContentType("text/html;charset=utf-8");
PrintWriter pw =response.getWriter(); =("张三")){
pw.println("エラー");
}else{
pw.println("正しい");
}
コードからもわかるように、エンコード形式を含むステートメントは文字化けを解決する方法の 1 つです。
コード内の注:
1.URLDecoder.decode(request.getParameter("userName"),"utf-8") - ページからのデータの形式を変換して抽出します。
2.response.setContentType("text/html;charset=utf-8") - 応答の戻り値を utf-8 でエンコードし、ページに戻ります
3. 2 の変換に特に注意してください。このメソッドのすべての応答の前に記述する必要があります。そうしないと失敗する可能性があります
4. このサーブレットによるデータの形式エンコードは、送信メソッドが GET の場合にのみ適しています。ページを抽出するコードは、データは次のとおりです:
コードをコピー
コードは次のとおりです:
コードをコピーします
コードは次のとおりです以下のように:
<%@ page language="java"import="java.util.*" pageEncoding="utf-8"%>
文字列パス = request.getContextPath();
StringbasePath =request.getScheme() "://" request.getServerName() ":" request.getServerPort() パス "/";
%>
<頭>
私の JSP 'ajax.jsp' 開始ページ
function vali(){
$.ajax({
type:"POST",
url:"/jQuery_Ajax/Vali",
data:encodeURI(encodeURI("userName=" $(":text").val())),
success:function(data){
$("span").text(data);
}
});
}
用户名:
秘密: