新手刚学AJAX,遇到问题,求高手指点.

mooninday 2007-06-07 08:14:55
我想用AJAX实现一个基本的功能,就是在文本框里输入数字,是整数就提示正确,否则就提示错误.我是照着书上做的,可怎么就不能提示呢?求高手指点.

下面是HTML:
<%@page contentType="text/html; charset=GB2312"%>
<html>
<head>
<title>注册页面</title>
<script >
var xmlHttp;
function createXMLHttpRequest(){ if(window.ActiveXObject){
xmlHttp = new ActiveXObjet("Microsoft.XMLHTTP");
}
else if{
xmlHttp = new XMLHttpRequest();
}
}

function validate(){
createXMLHttpRequest();
var age = document.getElementById("age");
var url = "ValidationServlet?age="+escape(age.value);
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = callback;
xmlHttp.send(null);
}

function callback(){
if(xmlHttp.readyState == 4){
if(xmlHttp.status == 200){
var mes = xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;

var val = xmlHttp.responseXML.getElementsByTagName("passed")[0].firstChild.data;

setMessage(mes, val);
}
}
}

function setMessage(mes, val){
var messageArea = document.getElementById("ageMessage");
var fontColor = "red";
if(val == "true"){
fontColor="green";
}
messageArea.innerHTML =
"<font color="+fontColor+">"+mes+"</font>";
}
</script>
</head>
<body>
<form action="AdduserServlet" method="POST">
年龄:<input type="text" id="age" onchange="validate();"><br />
<div id="ageMessage"></div>
</form>
</body>
</html>

以下是Servlet:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class ValidationServlet
extends HttpServlet {
private static final String CONTENT_TYPE = "text/html; charset=GBK";

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

PrintWriter out = response.getWriter();
boolean passed = validateAge(request.getParameter("age"));
response.setContentType("text/xml");
response.setHeader("Cache-Control", "no-cache");
String message = "You hava entered an invalid age";
if(passed){
message="You hava entered an valid age";
}
out.println("<response>");
out.println("<passed>"+Boolean.toString(passed)+"</passed>");
out.println("<message>"+message+"</message>");
out.println("</response>");
out.close();
}

private boolean validateAge(String age){
boolean isValid = true;
if(age != null){
try{
int intAge = Integer.parseInt(age);
}
catch(NumberFormatException nfe){
System.out.println(nfe.toString());
isValid = false;
}
}else{
isValid = false;
}
return isValid;
}
}
...全文
264 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
amangoing 2008-12-26
  • 打赏
  • 举报
回复
realeasy 2007-06-08
  • 打赏
  • 举报
回复
你先看看你服务器端返回什么,要学会调试,这种问题问别人也很难给你解答
mooninday 2007-06-08
  • 打赏
  • 举报
回复
先谢谢大家的建议
我再去试试
beyondflight 2007-06-08
  • 打赏
  • 举报
回复
完全同意iuhxq(小灰)的建议。
iuhxq 2007-06-08
  • 打赏
  • 举报
回复
书上的例子非常不恰当。

这功能应该在客户端做,根本不用ajax请求服务器。
zhulei2008 2007-06-08
  • 打赏
  • 举报
回复
if(xmlHttp.status == 200)
{
//先看看xmlHttp.responseXML是否有值
alert(xmlHttp.responseXML);
// ....
// ....
// ....
}

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧