当前位置:网站首页>简述xhr -xhr的基本使用
简述xhr -xhr的基本使用
2022-07-06 09:21:00 【玲小叮当】
文章目录
XMLHttpRequest API总结
属性:
readyState
xhr的状态码 4 响应体接收完毕status
获取状态码responseText
获取响应体,文本格式responseXML
获取响应体,xml格式onreadtstatechange
事件,当xhr.readyState
属性发生改变触发onload
事件,响应接收完毕
方法:
open(method, url, async)
设置请求的方式,请求的路径,同步/异步send(requestBody)
发送请求体setRequestHeader(key, value)
设置请求头getResponseHeader(key)
获取响应头
请求的方式
onload
:方便获取响应的事件
GET
- 创建
xhr
对象- 调用
open
方法,设置请求方式和URL
- 调用
send
方法,发送- 当请求响应过程结束了(调用了
xhr.onload
事件),通过responseText
属性接收服务器返回的数据ajax
的get
请求
document.getElementById('btn').onclick = function () {
// 创建xhr对象
let xhr = new XMLHttpRequest()
// 调用open方法,设置请求方式和URL
xhr.open('GET', 'http://127.0.0.1:3000/search')
// 调用send方法,发送
xhr.send()
// 当请求响应过程结束了(调用了xhr.onload事件),通过responseText属性接收服务器返回的数据
xhr.onload = function () {
console.log(xhr.responseText)
}
}
注意:GET
请求 IE
缓存及解决方案
- 原因:两次请求的
url
完全一致,第二次请求的时候,IE
不会向服务器再次发请求了 ,而是使用第一次请返回的结果 - 解决:让每次请求的
url
不一致,可以加时间戳参数
POST
- 创建
xhr
对象- 调用
open
方法,设置请求方式和URL
- 调用
setRequestHeader( )
方法,设置header
头,指定content-type
- 调用
send
方法,发送- 当请求响应完毕,接收服务器返回的数据
// 创建xhr对象
let xhr=new XMLHttpRequest()
// 调用open方法,设置请求方式和URL
xhr.open('POST', 'http://127.0.0.1:3000/search')
// 调用setRequestHeader( )方法,设置header头,指定content-type
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
// 调用send方法,发送
xhr.send('x=11111')
// 当请求响应完毕,接收服务器返回的数据
xhr.onreadystatechange=function(){
if (xhr.readyState===4 || xhr.status===200) {
console.log(xhr.responseText);
}
}
基础get方式和post方式的区别
ajax
的GET
请求和ajax
的post
请求,传递参数的位置不一样GET
请求只能携带少量的参数,POST
请求携带的数据没有限制- 只有
POST
方式的请求才能够上传文件
onreadystatechange和readyState
readyState
xhr
的5种状态
readyState
的值为4,表示浏览器已经完全接收到了服务器返回的数据
readyState | 状态描述 | 说明 |
---|---|---|
0 | UNSENT | 代理(XHR)被创建,但尚未调用 open() 方法 |
1 | OPENED | open() 方法已经被调用,建立了连接。 |
2 | HEADERS_RECEIVED | send() 方法已经被调用,并且已经可以获取状态行和响应头。 |
3 | LOADING | 响应体下载中,responseText 属性可能已经包含部分数据。 |
4 | DONE | 响应体下载完成,可以直接使用responseText 。 |
onreadystatechange
- ajax执行状态发生改变(当
readyState
的值发生变化的时候)会触发 - 当接收到的数据发生变化,也会触发该事件
- 他可以代替
onload
事件
同步与异步
xhr.open( )
第三个参数传入布尔值- 作用就是设置此次请求是否采用异步方式执行,默认为
true
异步,false
为同步 - 同步请求
ajax
的同步请求,会在send
方法那里被卡住,什么时候服务器返回数据了,后续代码才能执行,不赞成使用- 异步请求
ajax
的异步请求,不会阻塞后续代码执行,赞成使用
兼容
- IE5、IE6:没有
XMLHttpRequest
对象
var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
总结
Ajax
就是浏览器提供的一套 API
,可以通过 JavaScript
调用,从而实现通过代码控制请求与响应,实现网络编程。
本篇到此结束,大家感觉还实用的话,关注或者点个赞都可以,谢谢啦!
边栏推荐
猜你喜欢
1. C language matrix addition and subtraction method
[面試時]——我如何講清楚TCP實現可靠傳輸的機制
5. Download and use of MSDN
Cloud native trend in 2022
更改VS主题及设置背景图片
Arduino+ water level sensor +led display + buzzer alarm
[面试时]——我如何讲清楚TCP实现可靠传输的机制
9.指针(上)
The latest tank battle 2022 - Notes on the whole development -2
2022泰迪杯数据挖掘挑战赛C题思路及赛后总结
随机推荐
Arduino+ds18b20 temperature sensor (buzzer alarm) +lcd1602 display (IIC drive)
魏牌:产品叫好声一片,但为何销量还是受挫
【九阳神功】2019复旦大学应用统计真题+解析
String abc = new String(“abc“),到底创建了几个对象
1.C语言矩阵加减法
使用Spacedesk实现局域网内任意设备作为电脑拓展屏
一段用蜂鸣器编的音乐(成都)
7.数组、指针和数组的关系
MPLS experiment
FAQs and answers to the imitation Niuke technology blog project (I)
【九阳神功】2017复旦大学应用统计真题+解析
Application architecture of large live broadcast platform
ABA问题遇到过吗,详细说以下,如何避免ABA问题
西安电子科技大学22学年上学期《信号与系统》试题及答案
string
Mortal immortal cultivation pointer-1
2022泰迪杯数据挖掘挑战赛C题思路及赛后总结
2. Preliminary exercises of C language (2)
3.猜数字游戏
MySQL中count(*)的实现方式