发送Ajax请求步骤:
1、创建XMLHttpRequest对象
2、准备发送
3、执行发送动作
4、指定回调函数
第一步:创建XMLHttpRequest对象
// 1、创建XMLHttpRequest对象
var xhr = null;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest(); //标准
} else {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
//IE6 没有XMLHttpRequest对象,可以采用上面的方式达到相同的效果 !!!
}
第二步:准备发送
xhr.open(参数一,参数二,参数三)
/*
参数一:请求方式(get获取数据;post提交数据)
参数二:请求地址
参数三:同步或者异步标志位,默认是true表示异步,false表示同步
如果是get请求那么请求参数必须在url中传递
encodeURI()用来对中文参数进行编码,防止乱码
*/
先说 get 请求 :
前端代码:
<!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 pw = document.getElementById('password').value;
// 1、创建XMLHttpRequest对象
var xhr = null;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest(); //标准
} else {
xhr = new ActiveXObject("Microsoft"); //IE6
}
// 2、准备发送
/*
参数一:请求方式(get获取数据;post提交数据)
参数二:请求地址
参数三:同步或者异步标志位,默认是true表示异步,false表示同步
如果是get请求那么请求参数必须在url中传递
encodeURI()用来对中文参数进行编码,防止乱码,可以不用,不会出现乱码
*/
var param = 'username=' + uname + '&password=' + pw;
xhr.open('get', './03get.php?' + param, true);
// 3、执行发送动作
xhr.send(null); //get请求这里需要添加null参数
// 4、指定回调函数
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
alert(xhr.responseText);
}
}
}
}
}
</script>
</head>
<body>
<form>
用户名:
<input type="text" name="username" id="username"><span id="info"></span>
<br> 密码:
<input type="text" name="password" id="password">
<input type="button" value="登录" id="btn">
</form>
</body>
</html>
后端代码:
<?php
$uname = $_GET['username'];
$pw = $_GET['password'];
if ($uname == 'admin' && $pw == '123') {
echo 1;
} else {
echo $uname;
}
再来说 post 请求 :
前端代码 :
<!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 pw = document.getElementById('password').value;
// 1、创建XMLHttpRequest对象
var xhr = null;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest(); //标准
} else {
xhr = new ActiveXObject("Microsoft"); //IE6
}
// 2、准备发送
/*
参数一:请求方式(get获取数据;post提交数据)
参数二:请求地址
参数三:同步或者异步标志位,默认是true表示异步,false表示同步
post请求参数通过send传递,不需要通过encodeURI()转码
必须设置请求头信息
*/
var param = 'username=' + uname + '&password=' + pw;
xhr.open('post', '04post.php', false);
// 3、执行发送动作
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(param); //post请求参数在这里传递,并且不需要转码
// 4、指定回调函数
console.log(123)
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
console.log(xhr.responseText)
alert(xhr.responseText);
}
}
}
}
}
</script>
</head>
<body>
<form>
用户名:
<input type="text" name="username" id="username"><span id="info"></span>
<br> 密码:
<input type="text" name="password" id="password">
<input type="button" value="登录" id="btn">
</form>
</body>
</html>
后端代码 :
<?php
$uname = $_POST['username'];
$pw = $_POST['password'];
if ($uname == 'admin' && $pw == '123') {
echo 1;
} else {
echo $uname;
}
<!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 pw = document.getElementById('password').value;
// 1、创建XMLHttpRequest对象
var xhr = null;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest(); //标准
} else {
xhr = new ActiveXObject("Microsoft"); //IE6
}
// readyState=0表示xhr对象创建完成
console.log(xhr.readyState + '----------1-----------');
// 2、准备发送
/*
参数一:请求方式(get获取数据;post提交数据)
参数二:请求地址
参数三:同步或者异步标志位,默认是true表示异步,false表示同步
post请求参数通过send传递,不需要通过encodeURI()转码
必须设置请求头信息
*/
var param = 'username=' + uname + '&password=' + pw;
xhr.open('post', '04post.php', true);
// 3、执行发送动作
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
xhr.send(param); //post请求参数在这里传递,并且不需要转码
// 4、指定回调函数
// readyState=1表示已经发送了请求
console.log(xhr.readyState + '----------2-----------');
// 该函数调用的条件就是readyState状态发生变化(不包括从0变为1)
xhr.onreadystatechange = function () {
/*
readyState:
2 浏览器已经收到了服务器响应的数据
3 正在解析数据
4 数据已经解析完成,可以使用了
*/
console.log(xhr.readyState + '----------3-----------');
// 4表示服务器返回的数据已经可以使用了,但是这个数据不一定是正常的
if (xhr.readyState == 4) {
// http的常见状态码
/*
200表示响应成功
404没有找到请求的资源
500服务器端错误
*/
// 200表示服务器返回的数据是正常的,不是200的话表示数据是错误的
if (xhr.status == 200) {
// 这里的200表示数据是正常的
alert(xhr.responseText);
// xhr.responseXML
}
}
}
}
}
</script>
</head>
<body>
<form>
用户名:
<input type="text" name="username" id="username"><span id="info"></span>
<br> 密码:
<input type="text" name="password" id="password">
<input type="button" value="登录" id="btn">
</form>
</body>
</html>
第三步:执行发送动作
xhr.send(null); //get请求这里需要添加null参数
xhr.send(param); post请求参数在这里传递,并且不需要转码
第四步:指定回调函数
先来看下面的代码 :
<!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 pw = document.getElementById('password').value;
// 1、创建XMLHttpRequest对象
var xhr = null;
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest(); //标准
} else {
xhr = new ActiveXObject("Microsoft"); //IE6
}
// readyState=0表示xhr对象创建完成
console.log(xhr.readyState + '----------1-----------');
// 2、准备发送
/*
参数一:请求方式(get获取数据;post提交数据)
参数二:请求地址
参数三:同步或者异步标志位,默认是true表示异步,false表示同步
post请求参数通过send传递,不需要通过encodeURI()转码
必须设置请求头信息
*/
var param = 'username=' + uname + '&password=' + pw;
xhr.open('post', '04post.php', true);
// 3、执行发送动作
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
xhr.send(param); //post请求参数在这里传递,并且不需要转码
// 4、指定回调函数
// readyState=1表示已经发送了请求
console.log(xhr.readyState + '----------2-----------');
// 该函数调用的条件就是readyState状态发生变化(不包括从0变为1)
xhr.onreadystatechange = function () {
/*
readyState:
2 浏览器已经收到了服务器响应的数据
3 正在解析数据
4 数据已经解析完成,可以使用了
*/
console.log(xhr.readyState + '----------3-----------');
// 4表示服务器返回的数据已经可以使用了,但是这个数据不一定是正常的
if (xhr.readyState == 4) {
// http的常见状态码
/*
200表示响应成功
404没有找到请求的资源
500服务器端错误
*/
// 200表示服务器返回的数据是正常的,不是200的话表示数据是错误的
if (xhr.status == 200) {
// 这里的200表示数据是正常的
alert(xhr.responseText);
// xhr.responseXML
}
}
}
}
}
</script>
</head>
<body>
<form>
用户名:
<input type="text" name="username" id="username"><span id="info"></span>
<br> 密码:
<input type="text" name="password" id="password">
<input type="button" value="登录" id="btn">
</form>
</body>
</html>
下面是 php代码:
<?php
$uname = $_POST['username'];
$pw = $_POST['password'];
if ($uname == 'admin' && $pw == '123') {
echo 1;
} else {
echo $uname;
}
控制台运行结果如下图所示:
小结:
1. readyState=0表示xhr对象创建完成
2. readyState=1表示已经发送了请求
3. readyState:
=2 浏览器已经收到了服务器响应的数据
=3 正在解析数据
=4 数据已经解析完成,可以使用了
注意: 4表示服务器返回的数据已经可以使用了,但是这个数据不一定是正常的
xhr.status == 200 表示服务器返回的数据是正常的,不是200的话表示数据是错误的
http的常见状态码:
200 表示响应成功
404 没有找到请求的资源
500 服务器端错误
如果这篇文章能够帮助到你,希望您不要吝惜点赞 ,您的支持是我继续努力的动力 !!!