struts2_Ajax_post_解决了中文乱码问题

本文介绍了一个使用AJAX实现的实时用户名验证系统。该系统通过客户端JavaScript与服务器端Struts2框架交互,在用户输入用户名时即时反馈是否已被占用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

使用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();

           }

       }

 

       return null;

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值