当前位置:编程学习 > JAVA >>

大家有没有AJAX验证注册时重复用户(一定要支持中文的) 网上好多都不支持中文 已输入中文就不能判断了

大家有没有AJAX验证注册时重复用户(一定要支持中文的) 网上好多都不支持中文 已输入中文就不能判断了

先给大家个例子  英文和数字没问题   一遇到汉字就不行了  大家有解决办法没:



<%@ page language="java" import="java.util.*"  pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>AJAX注册验证是否重复用户</title>


  </head>
  
  <body>
  <script type="text/javascript">
  
  var xmlHttp;    //AJAX核心对象
  var flag;       //定义标志位   
  function createXMLHttp()
  {
    if(window.XMLHttpRequest)  //判断当前浏览器类型
     {
        xmlHttp=new XMLHttpRequest();//表示当前是FIREFOX内核浏览器
     }
     else                         //表示当前是IE内核
     {
       xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
     
     }
  
  
  }
  
  function checkUsername(username)
  {
  
     createXMLHttp();   //建立xmlHttp核心对象
     //设置一个请求,通过地址重写的方式将userid传递到JSP中
     xmlHttp.open("POST","CheckUser?username="+username);
     //设置请求完成之后处理的回调函数
     xmlHttp.onreadystatechange=checkUseridCallback;
     xmlHttp.send(null);  //发送请求,不传递任何参数
     document.getElementById("msg").innerHTML="正在验证''''''";
     
  
  }
  
  function  checkUseridCallback()  //定义回调函数
  {
     if(xmlHttp.readyState==4)    //数据返回完毕
     {
        if(xmlHttp.status==200)   //HTTP操作正常
        {
        
          var text=xmlHttp.responseText;  //接受返回的内容
          if(text=="true")
          {
            flag=false;  //无法提交表单
            document.getElementById("msg").innerHTML="用户ID重复,无法使用";
            
          }
          else
          {
            flag=true;  //可以提交表单
            
            document.getElementById("msg").innerHTML="此用户ID可用";
          
          }
        
        }
      
     }
     
  
  }
  
  function checkForm()
  {
  
    return flag;
  
  }
  
  
  </script>
  
  <form action="CheckUser" method="post" onsubmit="return checkForm()">
    用户名: <input type="text" name="username" onblur="checkUsername(this.value)"> <span id="msg"></span>  <br>
  
        
   密码: <input type="text" name="password"><br>
   邮箱: <input type="text" name="email"> <br>
    <input type="submit" value="注册">
    </form>
  </body>
</html>


--------------------编程问答-------------------- 中文参数 加密 后台接收到后解密 你试试
--------------------编程问答-------------------- 我的处理方法是在后台接收的时候加上:
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("UTF-8");

前台的ajax加上:
contentType: "application/x-www-form-urlencoded; charset=utf-8",
我用的是JQ的框架  你现在后台接收的时候加上那句话试试 --------------------编程问答-------------------- js不是有那个encodURL,改代码的时候测试过那么写肯定是可以的 --------------------编程问答-------------------- 中文使用encode



js进行encode
var url = "CheckUser?username=中文";
xmlHttp.open("POST",encode(url));


解密使用username = URLDecoder.decode(username);



另外一般ajax 有成熟的jquery ajax框架
里面可以设置编码集。 --------------------编程问答--------------------
引用 4 楼 sd4000784 的回复:
中文使用encode



js进行encode
var url = "CheckUser?username=中文";
xmlHttp.open("POST",encode(url));


解密使用username = URLDecoder.decode(username);



另外一般ajax 有成熟的jquery ajax框架
里面可……



encode() - > encodeURI() --------------------编程问答-------------------- 哦 对了  要经过2次encodeURI
encodeURI(encodeURI(url)) --------------------编程问答-------------------- 'cp/findCpNameISexist.h?cpName='+encodeURIComponent(encodeURIComponent($("#cpName").val())) --------------------编程问答-------------------- 两次encodeURI(encodeURI(url))后台用username= URLDecoder.decode(username,"UTF-8");这样就可以了
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,