1. 程式人生 > >struts2_Ajax_post_解決了中文亂碼問題

struts2_Ajax_post_解決了中文亂碼問題

<!-- ###############################################################################

使用AJAX對使用者名稱進行驗證--begin

####################################################################################-->

<script type="text/javascript">

var xmlHttp;//公共的變數,代表XMLHttpRequest物件

//例項化物件

function createXMLHttpRequest(){

if(window.ActiveXObject){

xmlHttp=new ActiveXObject("microsoft.XMLHTTP");

}else{

xmlHttp=new XMLHttpRequest();

}

}

//傳送資料

function sendRequest(url){

//alert("1");

createXMLHttpRequest();

//alert("2");

xmlHttp.open("POST",url,true);

//alert("3");

xmlHttp.onreadystatechange = processResponse;

//alert("4");

//使用

post方式傳送資料的時候,必須加上這句話,否則資料傳送不到伺服器

xmlHttp.setRequestHeader("content-type",

"application/x-www-form-urlencoded");

//alert("5");

xmlHttp.send("username="+document.all.username.value);

//alert("6");

}

//接受返回資料

function processResponse(){

/*xmlHttp.readyState返回的5int數的含義

0請求未初始化(還沒有呼叫 open())。

1:請求已經建立,但是還沒有傳送(還沒有呼叫

send())。

2:請求已傳送,正在處理中(通常現在可以從響應中獲取內容頭)。

3:請求在處理中;通常響應中已有部分資料可用了,但是服務器還沒有完成響應的生成。

4:響應已完成;您可以獲取並使用伺服器的響應了。

*/

//alert("7");

if(xmlHttp.readyState==4){

//alert("8");

if(xmlHttp.status==200){

//alert("9");

var message = xmlHttp.responseText;

if("@_#,該使用者名稱已經被可以註冊過了,請更換!" == message){

alert(message);

//username為form表單的text物件

document.getElementById("username").select();

document.all.myspan.innerText = "#_@";

}else{

document.all.myspan.innerText = "@_@";

}

//alert("10");

}

}

}

//載入促發函式

function checkUser(){

var username = document.all.username.value;

if("" == username){

alert("您沒有輸入使用者名稱稱!");

document.all.username.select();

return;

}else{

sendRequest("struts2.register!checkUsername.action");

}

}

</script>

<!-- ###############################################################################

使用AJAX對使用者名稱進行驗證--end

####################################################################################-->

--------------------------------------------------------------------------------------------

action程式碼:

/**

*使用Ajax傳遞的引數

*註冊時檢驗是否存在該使用者,不存在則允許註冊

*@return

*/

public String checkUsername(){

//根據傳遞過來的username查詢資料庫,沒有查到返回true

boolean bool = new UserDAOImpl().checkUsername(username);

if(bool){

try {

//設定response的編碼方式

response.setCharacterEncoding("UTF-8");

//返回給Ajax的資訊

response.getWriter().write("@_@,該使用者名稱可以註冊!");

} catch (IOException e1) {

e1.printStackTrace();

}

}else{

try {

//設定response的編碼方式

response.setCharacterEncoding("UTF-8");

//返回給Ajax的資訊

response.getWriter().write("@_#,該使用者名稱已經被可以註冊過了,請更換!");

} catch (IOException e1) {

e1.printStackTrace();

}

}

returnnull;

}