废话不多说先来看一个ajax的小案例:
整体案例:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>AJAX初识
</title>
<script type="text/javascript">
window.onload = function() {
var btn = document.getElementById("btn");
btn.onclick = function() {
var uname = document.getElementById("username").value;
var pass = document.getElementById("pass").value;
var xhr = new XMLHttpRequest();
xhr.open('get','01check.php?username=' + uname + '&password=' + pass, true);
xhr.send(null);
xhr.onreadystatechange = function() {
if (xhr.readyState == 4) {
if(xhr.status = 200) {
var data = xhr.responseText;
var info = document.getElementById("info");
if (data == "1") {
info.innerHTML = '登录成功'
} else {
info.innerHTML = '用户名或密码错误';
}
}
}
}
}
}
</script>
</head>
<body>
<form>
用户名:
<input type="text" name="username" id="username">
<span id="info"></span>
<br />
密码:
<input type="password" name="pass" id="pass">
<input type="button" value="登录" id="btn">
</form>
</body>
</html>
<?php
$uname = $_POST['username'];
$pass = $_POST['password'];
if($uname == "admin" && $pass = "123") {
echo "1";
}else {
echo "2";
}
?>
第一步:Ajax核心对象的解析
XMLHttpRequest 是建立客户端和服务器端的通信
var xhr
= new XMLHttpRequest();
var xhr
= new ActiveXObject("Microsoft.XMLHTTP")
所以我们创建Ajax的标准写法就是:
var xhr
= null;
if (window
.XMLHttpRequest
) {
xhr
= new XMLHttpRequest();
} else {
xhr
= new ActiveXObject("Microsoft.XMLHTTP");
}
非标准写法是使用try和catch:
try {
xhr
= new XMLHttpRequest();
} catch {
xhr
= new ActiveXObject("Microsoft.XMLHTTP");
}
第二步:准备发送
xhr
.open('get','01check.php?username=' + encodeURI(uname
) + '&password=' + pass
, true);
xhr
.send(null);
get和post的请求的区别: get:我们可以看成get是把数据放在信封上,传递的速度快,因为不用打开信封就可以看到,但是谁都可以看到所以是不安全的,并且传递的数据是有长度的 post:可以看成是把数据放在信封里面用信纸写的,同理我们要先打开信封,所以传递速度相对较慢,也比较安全,并且传递的数据是没有长度限制的。
第三步执行发送
xhr
.open('post','01check.php', true);
xhr
.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
var param
= "username=" + uname
+ "&password=" + pass
;
xhr
.send(param
);
第四步指定回调函数
xhr
.onreadystatechange
= function() {
if (xhr
.readyState
== 4) {
if(xhr
.status
= 200) {
var data
= xhr
.responseText
;
console
.log(xhr
.responseText
);
var info
= document
.getElementById("info");
if (data
== "1") {
info
.innerHTML
= '登录成功'
} else {
info
.innerHTML
= '用户名或密码错误';
}
}
}
}