我是想验证一个用户名是否存在的,通过前台的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>");
}
%>
谢谢了啊。
<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>");
}
%>
谢谢了啊。
你不是获取的是nameId吗?怎么现在来个id?
我通过
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后面的参数啊,我想应该是正确的啊,但是就是得不到啊!
高手们请帮忙啊
req.open("GET",url,true);
req.send(null);
req.onreadystatechange=callback();
还有我按你说的调一下顺序还是获取不到参数的值,还是为空。
可能是我的问题太幼稚了吧,没什么人回答,好让人失望啊
期待高手解决啊