AJAX概念
(1)异步请求技术。
(2)无需刷新页面,通过ajax向后台发送请求并等响应后呈现到页面上。
使用xhr发送AJAX请求步骤
(1)创建XMLHttpRequest实例;
(2)发送HTTP实例
(3)监听请求
(4)接收服务器返回的数据
原生AJAX
const ajax = {
get(url,func){
//创建异步对象
const xhr = new XMLHttpRequest()
//第一个参数是请求类型,第二个参数是请求的url(可以带参数),第三个参数异步与否
//第三个参数:true为异步,请求和后续代码同时执行;false为同步,等待请求完成后执行后续代码
//建立连接
xhr.open('GET',url,true)
//监听请求
xhr.onreadystatechange = function(){
//监听请求进度
if(xhr.readyState === 4) {
//xhr.responseText存储着服务器返回客户端的数据,数据是JSON格式的字符串
func(xhr.responseText)
}
}
//发送请求
xhr.send()
}
post(url,data,func){
const xhr = new XMLHttpRequest()
xhr.open('POST',url,true)
//设置Content-type属性
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded')
//监听onreadystatechange事件
xhr.onreadystatechange = function(){
if(xhr.readyState === 4){
func(xhr.responseText)
}
}
//发送请求
xhr.send(data)
}
}
步骤详解
XMLHttpRequest实例
现代每个浏览器都有内建的对象:XMLHttpRequest 创建一个实例对象: const xhr = new XMLHttpRequest()
发送xhr实例
向服务器发送请求,需要用到XMLHttpRequest的open方法和send方法
//对请求的类型,url和异步与否进行规定
open(method,url,async):
method:请求的类型
url:文件在服务器的位置
async:异步true,同步false
send():
//GET请求中,send无需带参数
//POST请求中,send需要带参数,也就是提交的数据
监听请求
xhr.readyState 的值表明了请求进度;
0 =>未初始化,还没有调用send()方法;
1 =>载入;已调用send()方法,正在发送请求;
2 =>载入完成;send()执行完成,已经接收到全部的响应内容;
3 =>交互;正在解析响应内容;
4 =>完成;响应内容解析完成,可以在客户端调用了;
xhr.status 获取服务器响应的状态码
1开头:信息性状态码,表示接收的请求正在处理
2开头:成功状态码,表示请求正常处理
3开头:重定向状态码,表示需要附加操作来完成请求
4开头:客户端错误状态,表示服务器无法处理请求
5开头:服务器错误状态,表示服务器处理请求出错
接收数据
responseText:获得字符串形式的响应数据
responseXML:获得XML形式的响应数据
上面的例子中传入了func回调函数,也就是自己定义的方法。怎么操作响应返回的数据就在该方法内写。
个人笔记