AJAX
ajax想要实现浏览器与服务器之间的异步通信,需要使用XMLHttpRequest构造函数来实现
1.ajax使用步骤
//创建实例对象
conat xhr = new XMLHttpRequest();
//准备发送请求
xhr.open('POST','http:localhost.8080',true);
//发送请求,调用sand()发送请求
send();
//监听事件,处理响应。当接收到响应时触发readystatechange
//readystatechange事件一共有5个状态,可以通过readyState监听
//0:未初始化,未调用open()
//1:启动,已调用open(),但未调用send()
//2:发送,已经调用send()但并没有接受到响应
//3:接收,已接收到部分数据
//4:完成,已经接收到全部数据
xhr.onreadystatechange=()=>{
if(xhr.readyState!==4) return;
//判断http状态
if((xhr.status>=200&&xhr.status<300 )||xhr.status===304){
console.log(xhr.responseText)
console.log('数据正常使用!')
}else{
//其他处理
}
}
2.完成Ajax前后端通信
const xhr = new XMLHttpRequest();
xhr.onreadystatechange= () =>{
if(xhr.readyState !== 4) return;
if ((xhr.status >= 200 && xhr.status < 300)|| xhr.status === 304) {
console.log(xhr.response);
}
}
//xhr.timeout可以指定超时时间
//xhr.response可以指定格式如json或text默认为text
//xhr.abort()结束当前请求
//xhr.setRequestHeader();设置请求头信息
xhr.open('GET',url,true);
xhr.send(null);
3.xhr事件
- load事件 数据响应时触发 IE9开始支持
xhr.onload = () =>{
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304) {
let str = JSON.parse(xhr.response);
console.log(str);
// return str;
}
}
- error事件 请求发生错误时触发
xhr.addEventListener(
'error',() => {
console.log('error')
},false)
- abort事件 当调用abort()事件时触发
xhr.addEventListener(
'abort', () => {
console.log('abort')
}, false)
- timeout事件 请求发生错误时触发
xhr.addEventListener(
'timeout',() => {
console.log('timeout')
},false)