当前位置:网站首页>简述xhr -xhr的基本使用
简述xhr -xhr的基本使用
2022-07-06 09:21:00 【玲小叮当】
文章目录
XMLHttpRequest API总结
属性:
readyStatexhr的状态码 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 调用,从而实现通过代码控制请求与响应,实现网络编程。
本篇到此结束,大家感觉还实用的话,关注或者点个赞都可以,谢谢啦!
边栏推荐
- 7. Relationship between array, pointer and array
- Mortal immortal cultivation pointer-1
- 甲、乙机之间采用方式 1 双向串行通信,具体要求如下: (1)甲机的 k1 按键可通过串行口控制乙机的 LEDI 点亮、LED2 灭,甲机的 k2 按键控制 乙机的 LED1
- [modern Chinese history] Chapter 6 test
- 使用Spacedesk实现局域网内任意设备作为电脑拓展屏
- 最新坦克大战2022-全程开发笔记-3
- 【九阳神功】2018复旦大学应用统计真题+解析
- (原创)制作一个采用 LCD1602 显示的电子钟,在 LCD 上显示当前的时间。显示格式为“时时:分分:秒秒”。设有 4 个功能键k1~k4,功能如下:(1)k1——进入时间修改。
- 1.初识C语言(1)
- 【九阳神功】2022复旦大学应用统计真题+解析
猜你喜欢

IPv6 experiment
![[面試時]——我如何講清楚TCP實現可靠傳輸的機制](/img/d6/109042b77de2f3cfbf866b24e89a45.png)
[面試時]——我如何講清楚TCP實現可靠傳輸的機制

Service ability of Hongmeng harmonyos learning notes to realize cross end communication

8. C language - bit operator and displacement operator

Leetcode.3 无重复字符的最长子串——超过100%的解法

fianl、finally、finalize三者的区别

Mortal immortal cultivation pointer-1

5.MSDN的下载和使用

View UI plus released version 1.3.0, adding space and $imagepreview components

受检异常和非受检异常的区别和理解
随机推荐
List set map queue deque stack
ROS machine voice
Service ability of Hongmeng harmonyos learning notes to realize cross end communication
Change vs theme and set background picture
使用Spacedesk实现局域网内任意设备作为电脑拓展屏
6.函数的递归
【毕业季·进击的技术er】再见了,我的学生时代
2.C语言初阶练习题(2)
西安电子科技大学22学年上学期《射频电路基础》试题及答案
1.C语言矩阵加减法
FAQs and answers to the imitation Niuke technology blog project (I)
A piece of music composed by buzzer (Chengdu)
1. C language matrix addition and subtraction method
[中国近代史] 第五章测验
更改VS主题及设置背景图片
There is always one of the eight computer operations that you can't learn programming
[the Nine Yang Manual] 2019 Fudan University Applied Statistics real problem + analysis
为什么要使用Redis
MPLS experiment
抽象类和接口的区别