register.php
<html>
<head>
<title>用户注册</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<meta http-equiv="content-type" content="text/html;charset=gb2312" />
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
//创建ajax引擎
function getXmlHttpObject(){
var xmlHttpRequest;
//不同的浏览器获取对象xmlhttprequest对象方法不同
if(window.ActiveXObject){
//IE下创建xmlhttprequest对象
xmlHttpRequest=new ActiveXObject("Microsoft.XMLHTTP");
}else{
//非IE下创建xmlhttprequest对象
xmlHttpRequest=new XMLHttpRequest();
}
return xmlHttpRequest;
}
//验证用户名是否存在
//这里我发现把myXmlHttpRequest=getXmlHttpObject();定义在函数外面结果也是一样,当然作用也是一样
//var myXmlHttpRequest=getXmlHttpObject();
var myXmlHttpRequest;//因为函数外部调用了该变量,所以必须定义为全局变量
function checkName(){
//这里我发现把myXmlHttpRequest=getXmlHttpObject();定义在函数外面结果也是一样,当然作用也是一样
myXmlHttpRequest=getXmlHttpObject();
if(myXmlHttpRequest){
//get方式提交
//var url="/ajax/registerProcess.php?username="+$("username").value;
//var url="/ajax/registerProcess.php?mytime="+new Date()+"&username="+$("username").value;//如果不想让浏览器缓存,每次发送的地址都不相同,浏览器就不会缓存,在这里加上时间就可以
//post方式提交
var url="/ajax/registerProcess.php";
data="username="+$('username').value;
//第一个参数post是提交数据的方式
//第二个参数url是提交数据到了哪个页面,这是是/ajax/registerProcess.php,因为程序是新打开,所以最好写上此程序目录所在
//第三个参数true时,说明是异步传送;如果是false是非异步传送
myXmlHttpRequest.open("post",url,true);
//当提交方法为post时,要写上这句,固定用法
myXmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//当对象的状态发生改变时,调用返回函数
myXmlHttpRequest.onreadystatechange=chuli;
//发送数据
myXmlHttpRequest.send(data);
}
}
function chuli(){
//window.alert("处理函数被调用"+myXmlHttpRequest.readyState);
if(myXmlHttpRequest.readyState==4){
//根据返回数据的类型,使用myxmlhttprequest的对象属性,当返回文本数据时,使用responseText属性
//window.alert("服务器无刷新"+myXmlHttpRequest.responseText);
//$('myres').value=myXmlHttpRequest.responseText;
//下面属性后面是小括号,开始用了大括号,费了很久
//var mes=myXmlHttpRequest.responseXML.getElementsByTagName("mes");
//mes[0]—>表示标签为mes的第一个节点
//mes[0]->表示标签为mes的第一个节点的第一个子节点
var mes=myXmlHttpRequest.responseXML.getElementsByTagName("mes");
var mes_val=mes[0].childNodes[0].nodeValue;
$('myres').value=mes_val;
//window.alert(mes_val);
}
}
function $(id){//把DOM对象封装为一个函数进行调用
return document.getElementById(id);
}
</script>
</head>
<body>
<form action="???" method="post">
用户名字:<input type="text" name="username1" id="username"><input type="button" οnclick="checkName();" value="验证用户名">
<input style="border-width: 0" type="text" id="myres">
<br/>
用户密码:<input type="password" name="password"><br>
电子邮件:<input type="text" name="email"><br/>
<input type="submit" value="用户注册">
</form>
<form action="???" method="post">
用户名字:<input type="text" name="username2" >
<br/>
用户密码:<input type="password" name="password"><br>
电子邮件:<input type="text" name="email"><br/>
<input type="submit" value="用户注册">
</form>
</body>
</html>
registerProcess.php
<?php
//****返回数据的xml格式
header("Content-Type:text/xml;charset=gb2312");
//返回数据不缓存
header("Cache-Control:no-cache");
//$username=$_REQUEST['username'];
$username=$_POST['username'];
//这里看看如何处理格式是xml
$info="";
if($username=="shunping"){
$info.="<res><mes>用户不可用</mes></res>";
}else{
$info.="<res><mes>用户名ok</mes></res>";
}
echo $info;
//v如果不写最后的这个,说明是被别的程序包着的
?>