在PHP基础的学习过程中经常会遇到对页面的局部刷新。
比如说,我们在填写用户名的同时,对数据库中的信息进行验证,检查是否充分。
这时就要用到AJAX实现页面的动态加载。
下面例子是简单的PHP与AJAX交互的方法:
PHP+AJAX+MySQL
首先是html部分
ajax.html
<html>
<head>
<!--加载jquery库-->
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--加载js-->
<script type="text/javascript" src="ajax_test.js"></script>
</head>
<body>
<input class="input" type="text" name="name" onkeyup="nameCheck(this.value)">
</body>
</html>
然后是AJAX部分:
ajax_test.js
/*
动态检查用户名是否重复
当用户名栏有键盘动作时调用
会通过PHP检查MySQL数据库中用户名是否等于输入
*/
function nameCheck(str) {
//判断输入是否不为空
if (str.length !== 0) {
//不为空则启动AJAX进行局部刷新
if (window.XMLHttpRequest) {
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行的代码
xmlhttp = new XMLHttpRequest();
} else {
//IE6, IE5 浏览器执行的代码
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
//处理函数
xmlhttp.onreadystatechange = function() {
//readyState为4时服务器响应完成
//status=200时交易成功
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
//判断PHP返回值
if (xmlhttp.responseText == '1') {
//返回1说明用户名重复,弹出窗口
alert("用户名重复!");
}
}
};
//规定请求的类型、URL 以及是否异步处理请求。
xmlhttp.open("GET", "checkName.php?name=" + str, true);
//发送
xmlhttp.send();
}
}
之后是处理数据库的php部分
checkName.php
<?php
/*
该脚本用于判断数据库中是否存在AJAX传来的值
*/
//从请求URL地址中获取 name参数
$name=$_GET["name"];
//通过mysqli连接数据库
//参数分别为(服务器地址,用户名,密码,数据库名)
$con = new mysqli("localhost","root","","test");
//判断数据库连接是否成功
if ($con ->connect_error) {
//die()函数--->终止脚本并输出信息
die("数据库连接失败:".connect_error);
}
//SQL语句
$sql = "SELECT name FROM User WHERE Name = '".$name."'";
//调用mysqli的query()方法查询
$result = $con->query($sql);
//关闭连接
$con->close();
//判断结果并输出num_rows为行数
if ($result->num_rows != 0) {
//如果存在相同信息则输出'1'
echo('1');
}else{
//如果不存在相同信息则输出'0'
echo('0');
}
?>
我在数据库中插入过admin这个用户
所以,结果如下: