我正在看Ajax,里面的第一个例子就是简单的验证,不过服务器端是用serverlet实现的。我改用PHP,但是还是存在问题,感觉是PHP文件出现的问题,希望大家帮我看看这是怎么回事儿,谢谢了!
validation.html
<html>
<head>
<title>Using Ajax for validation</title>
</head>
<script language="javascript" 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="validationserver.php?birthDate="+escape(date.value);
xmlHttp.onreadystatechange=handleStateChange;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
function handleStateChange()
{
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;
/*
var mes="this is a test!";
var val=false;
*/
setMessage(mes,val);
}
}
}
function setMessage(mes,val)
{
var messageArea=document.getElementById("dateMessage");
var fontColor="red";
if(val=="true")
{
fontColor="green";
}
messageArea.innerHTML="<font color="+fontColor+">"+mes+"</font>";
}
</script>
<body>
<h1>Ajax Validation Example</h1>
Birth date:<input type="text" size="10" id="birthDate" onchange="validate();"/>
Example:2001-11-12
<div id="dateMessage"></div>
</body>
</html>
validationserver.php
<?php
if($_GET['birthDate']=="")
{
$message="You have entered a invalid date";
$passed=false;
}
else
{
$birthDate=$_GET['birthDate'];
$date=explode('-',$birthDate);
if(checkdate($date[1],$date[2],$date[0]))
{
$message="You have entered a valid date";
$passed=true;
}
else
{
$message="You have entered a invalid date";
$passed=false;
}
}
echo "<response>";
echo "<passed>".$passed."</passed>";
echo "<message>".$message."</message>";
echo "</response>";
?>
感觉的问题所在:
var mes=xmlHttp.responseXML.getElementsByTagName("message")[0].firstChild.data;
var val=xmlHttp.responseXML.getElementsByTagName("passed")[0].firstChild.data;
把mes和val变量赋成指定的值的时候可运行。
好像是获取不了PHP文件响应的数据,感觉是不是PHP文件生成的XML有问题呀?
[ 本帖最后由 yhbsww 于 2006-7-2 12:23 PM 编辑 ]