一个基础都不太熟的小菜鸟要搞些东西有时候还真挺不容易,这边就注册用户时即时检查用户名是否可用来简单的学学ajax吧。
去参考其他CMS开源系统中的代码,太过繁杂,于是自己找了些资料整理了一个简单的例子
参考资料 《Ajax+PHP程序设计实战详解》,位于第九章的例子
主要就是将文件中的检测修改为 查询数据库
多的不说直接上代码吧,需要的可以多看下注释
Login.html 文件如下
- <html>
- <head>
- <title>用户注册</title>
- <script type="text/javascript">
- var xmlHttp;
- function createXMLHttpRequest()
- {
- //在IE下创建XMLHttpRequest对象
- try
- {
- xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
- }
- catch(e)
- {
- try
- {
- xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
- }
- catch(oc)
- {
- xmlHttp = null;
- }
- }
- //在Mozilla和Safari等非IE浏览器下创建XMLHTTPRequest对象
- if(!xmlHttp && typeof XMLHttpRequest != "undefined")
- {
- xmlHttp = new XMLHttpRequest();
- }
- return xmlHttp;
- }
- //方式请求
- function startRequest()
- {
- //获取用户输入的信息
- var UserID = document.getElementById("UserID").value;
- //输入的用户名是否为空
- if(UserID!="")
- {
- //创建XMLHttpRequest对象
- createXMLHttpRequest();
- var url = "Login.php?UserID="+encodeURI(UserID); //指定url
- xmlHttp.open("GET",url,true);
- xmlHttp.onreadystatechange = handleStateChange; //指定回调函数
- xmlHttp.send(null);
- }
- else
- {
- alert("请填写您的用户名!");
- }
- }
- function handleStateChange()
- {
- if(xmlHttp.readyState<4)
- {
- span.innerHTML="正在读取数据...";
- }
- if(xmlHttp.readyState==4)
- {
- if(xmlHttp.status == 200)
- {
- span.innerHTML=xmlHttp.responseText;
- }
- else{
- alert("错误,请求页面异常!");
- }
- }
- }
- </script>
- </head>
- <body>
- <form action="#">
- <center>
- <h3>Ajax+php验证用户名是否可用</h3>
- <table>
- <tr>
- <td>用户名: <input type="text" name="UserID" id="UserID" onchange="startRequest()" />
- <span id="span"></span></td>
- </tr>
- <tr>
- <td>密 码: <input type="text" name="Pwd" id="Pwd"/></td>
- </tr>
- <tr>
- <td>
-
- <input type="button" name="Reg" id="Reg" value="注册"/>
- <input type="button" name="Log" id="Log" value="登录"/>
- </td>
- </tr>
- </table>
- </center>
- <form>
- </body>
- </html>
Login.php文件源码如下
- <?php
- //设置PHP的显示语言
- header('Content-Type:text/html;charset=UTF-8');
- //让程序先等待一秒
- sleep(1);
- //获取输入的用户名
- $tmp=$_GET["UserID"];
- $db_host="localhost";
- $db_name="canphp";
- $db_username="root";
- $db_password="rootpass";
- $link = mysql_connect($db_host, $db_username,$db_password ) or die ('Can\'t connet db!' . mysql_error());
- mysql_select_db($db_name, $link) or die ('Can\'t select db : ' . mysql_error());
- $query="select * from cp_user where username='$tmp'";
- $result = mysql_query($query) or die ($query.mysql_error());
- $rows=mysql_num_rows($result);
- if($rows>0)
- { //存在记录
- echo "用户名已存在";
- }else{
- echo("还没有被注册!");
- }
- ?>
文件中的部分信息需要按需修改下,如服务端处理文件中的数据库及表信息
先记录到这边吧,具体的原理也还不太懂,以后有用到 理解了再做补充 :-)