//我写的用户名验证:js:
function A{
 var ma=new myAjax;
  myAjax('zhucecheck',function(res){
               alert(res);
            switch (res) {
             case '0':..........
                      ..........}
   }
}//紧接着的是:
function myAjax(url,callback){
        var userName=document.getElementById("text_UserName").vaule;
        url = "zhucecheck" + "&" + escape(new Date());
            if(window.XMLHttpRequest){  
            xmlhttp = new XMLHttpRequest();
            if(xmlhttp.overrideMimeType){
                XMLHttpReq.setRequestHeader("context-type","text/xml;charset=UTF-8"); 
                      }
            }else if(window.ActiveXObject){
            var activexName =["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
            for(var i=0;i<activexName.length;i++){
            try{
            xmlhttp = new ActiveXObject(activexName[i]);
            break;
            }   catch(e){
            }
            }
            }
        xmlhttp.open("GET","zhucecheck?name="+userName,true);
        xmlhttp.onreadystatechange = function(){
            if(xmlhttp.readyState == 4){
                var msg = xmlhttp.responseText;
                alert("ff");
                callback(msg);
              }
        }
        xmlhttp.send(null);
    }
java 的servlet写的是::
public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try{            //request.setCharacterEncoding("UTF-8");
            response.setHeader("Charset","UTF-8");
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out =response.getWriter();
                       String old = request.getParameter("name");                       System.out.println("n="+old);
                        if(old == null || old.length() == 0) {
                            out.print("2");
                            System.out.println("错.00...");
            } else {
                 
            
            }
                        String name = new String(old.getBytes("UTF-8"));
        //传过去处理。
            checkuec cu=new checkuec();
            if(cu.checkuec(old)){
                out.print("0");
                System.out.println("对...");            }else{
                System.out.println("错....");
                out.print("1");
            }
            
        }catch(Exception e){
                            e.printStackTrace();
                        }
    }然后每次调试的时候,控制台输出的是n=undefined,但是又输出”对。。“,我就感觉是xml和servlet的传值协议有问题,但是我都写的是utf-8,改成GB2312也不行,输入英文也不行。纠结了就。大家看看是什么问题咯??小弟初学,有什么问题大家请狂喷!!!

解决方案 »

  1.   

    n=undefined
    是因为js里
      var userName=document.getElementById("text_UserName").vaule;没有取到value
    查看是否存在text_UserName你只是返回一个0对于编码没什么意义
    你真接访问一下"zhucecheck?name="+userName这个路径看看能不能返回1或0
      

  2.   

    怎么才能取到value的值呢?我的节点是这样写的: <input name="text_UserName" type="text" id="text_UserName" value="text_UserName" onblur="check_UserName();" class="inp ipt-normal" />
    我访问"zhucecheck?name="+userName这个路径是没有问题的,能正确返回
      

  3.   


     var userName=document.getElementById("text_UserName").vaule;

    alert(userName);看是否有东西。
    楼主书写有很多不规范地方,比如  checkuec cu=new checkuec();
    类名要大写。楼主我写个ajax工具类,你建个 ajaxUtil.js文件,把下面代码copy这个文件中var Ajax = {
    createXHR:function(){
    if(window.XMLHttpRequest){
    var xhr = new XMLHttpRequest();
    return xhr;
    }else if(window.ActiveXObject){
    var xhr = new ActiveXObject("Microsoft.XMLHTTP");
    return xhr;
    }
    },
    sendRequest:function(method,url,data,callback){// callback代表函数名
    var xhr = this.createXHR();
    xhr.open(method,url,true);
    if("GET"==method.toUpperCase()){
    xhr.send(null);
    }else if("POST"==method.toUpperCase()){
    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    xhr.send(data);
    }
    xhr.onreadystatechange=function(){
    if(xhr.readyState==4 && xhr.status==200){
    //callback(xhr);可以这样
    callback({text:xhr.responseText,xml:xhr.responseXML});// 也可以这样。这样最好,面向对象
    }
    }
    },
    };使用方法 在jsp中<script type="text/javascript" src="ajaxUtil.js"></script>
    <script type="text/javascrip">
    function method(){
    Ajax.sendRequest("get","你的url","name=张三&password="123456",callback);// 调用自己写的Ajax工具类
    }
    function callback(data){// 返回函数
    var aa = data.txt;// 得到字符串

    </script>后台servlet不变,仍然是String name = request.getParameter("name");
    String passowrd = request.getParameter("password");