我是想验证一个用户名是否存在的,通过前台的input输入,然后写一段js如下实现ajax的功能:
<script type="text/javascript">
var req;
function validate(){
var idField=document.getElementById("userid");
var url="validate.jsp?id = " + escape(idField.value);
//alert(url);           //正常显示
if(window.XMLHttpRequest){
req=new XMLHttpRequest();
}else if(window.ActiveXObject){
req=new ActiveXObject("Microsoft.XMLHTTP");
}
req.open("GET",url,true);
req.onreadystatechange=callback;
req.send(null);

}

function callback(){
if(req.readyState ==4){
if(req.status ==200){
var msg=req.responseXML.getElementsByTagName("msg");
//alert(msg[0].childNodes[0].nodeValue);
setMsg(msg[0].childNodes[0].nodeValue);
}
}
}

function setMsg(msg){
if(msg == "invalid"){
document.getElementById("usermsg").innerHTML = "<font size='-3' color='red'>用户名已存在,请重新输入</font>";
}else if(msg == "valid"){
document.getElementById("usermsg").innerHTML = "<font color='red'>恭喜您,用户名可用</font>";
}
}
在另一个页面验证:validate.jsp<%@ page import="cn.edu.cumt.shopping.*" %>
<%
String username=request.getParameter("id");

System.out.println(username);            //输出总是为空
boolean isusername=User.userExits(username);
response.setContentType("text/xml");
response.setHeader("Cache-Control","no-store");
response.setHeader("Pragma","no-cache");
response.setDateHeader("Expires",0);
System.out.println(isusername);
if(isusername){
response.getWriter().write("<msg>valid</msg>");
}else{
response.getWriter().write("<msg>invalid</msg>");
}

%>
谢谢了啊。

解决方案 »

  1.   

    String username=request.getParameter("id");
    你不是获取的是nameId吗?怎么现在来个id?
      

  2.   

    没有啊,我根本就没有写nameId这个参数啊
    我通过
    var idField=document.getElementById("userid"); 
    var url="validate.jsp?id = " + escape(idField.value); 
    来设参数的值啊,是的id等于idField的值啊,这里的id是String类型的啊。
    并且alert(url);正确啊,如validate.jsp?id=5412 ,这个事正确的啊,
    我的问题就是在validate.jsp中获取不到id后面的参数啊,我想应该是正确的啊,但是就是得不到啊!
    高手们请帮忙啊
      

  3.   

    是不是改成这样啊,open之后先发送,然后再callback(),你写的callback不带()啊?
    req.open("GET",url,true); 
    req.send(null); 
    req.onreadystatechange=callback(); 
      

  4.   

    这里的callback 方法是不能加()的,好像这个callback是系统方法,不需要加(),加了()是错误的啊。
    还有我按你说的调一下顺序还是获取不到参数的值,还是为空。
    可能是我的问题太幼稚了吧,没什么人回答,好让人失望啊
    期待高手解决啊