
2007-11-24 15:52
vvcolor
求救?這段Ajax代碼有什麽錯誤?
各位大虾,刚开始接触 ajax,不知道这段代码错在哪里?
请各位给看看,为什么不能触发验证函数?谢谢了
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" >
<html>
<head>
<title>Using Ajax for validation</title>
<script type="text/javascript">
var xmlHttp;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function validate() {
createXMLHttpRequest();
var date = document.getElementById("birthDate");
var url = "ValidationServlet?birthDate=" + escape(date.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(message, isValid) {
var messageArea = document.getElementById("dateMessage");
var fontColor = "red";
if (isValid == "true") {
fontColor = "green";
}
messageArea.innerHTML = "<font color=" + fontColor + ">"
+ message + " </font>";
}
</script>
</head>
<body>
<h1>Ajax Validation Example</h1>
Birth date: <input type="text" size="10" id="birthDate" onchange="validate();"/>
<div id="dateMessage"></div>
</body>
</html>
2007-11-24 17:52
lastwinner
<input type="text" size="10" id="birthDate" onchange="validate();"/>
要在这里里面填数据,然后离开(就是使这个input框失去焦点),才能触发
你这样做了吗?
btw:你给的片断别人无法测试的
你可以参考一下这里:
[url]http://lastwinner.itpub.net/post/7102/237711[/url]
[[i] 本帖最后由 lastwinner 于 2007-11-24 17:54 编辑 [/i]]
2007-11-26 13:38
fancychou
错误信息是什么?
2007-11-26 13:59
pandzhi
把錯誤提示貼出來看看.
2007-11-27 08:29
vvcolor
没有错误信息,就是没有反映..
2007-11-28 11:32
fancychou
你使用firefox+firebug调试,看到底从后台取到什么了
2007-12-19 11:26
ShadowKiller
如果没有反应,那么你就看下是不是你的servlet返回有问题。 看看xmlHttp.status 是不是200。 不出东西可能是这个问题
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);
}else{
[color=Black]alert("xmlHttp.status = "+xmlHttp.status)[/color]
}
}
对于xmlhttprequest, 一旦出现没有任何反应,首先应该考虑的是看服务端有没有返回,返回状态。
建议测试阶段加上else分支
2007-12-20 16:12
iooyoo
xmlHttp.open("GET", url, true);
新开一个网页,直接输入url(如果要登录先登录)看看正常不
不然就是javascript的问题了
2008-4-14 14:37
iezhyli
你可以在各个函数中加几个alert看看是不是执行了,另外最可能的错误就是servlet的返回有问题,可以照楼上说的直接在地址栏中输入网址看是否正常,servlet返回的xml格式看能否正常显示,建议先调试服务端程序,再调试js函数也可以一块调试。
2008-4-18 11:59
randoming
太长了..
2008-4-18 11:59
randoming
一段段测试啊
2008-4-21 17:14
ShadowKiller
先测试下,看xmlHttp 有没有成功的创建。
2008-4-21 17:21
ShadowKiller
var val =xmlHttp.responseXML .getElementsByTagName("passed")[0].firstChild.data;
这一句改为
var val =xmlHttp.responseXML .getElementsByTagName("passed")[0].firstChild.nodeValue;
页:
[1]

Powered by ITPUB论坛