当前位置:网站首页>Axios learning notes (2): easy to understand the use of XHR and how to package simple Axios
Axios learning notes (2): easy to understand the use of XHR and how to package simple Axios
2020-11-06 20:42:00 【Tell me Zhan to hide】
Use
XMLHttpRequest
(XHR) Objects can interact with the server . You can learn from URL get data , And without having to refresh the entire page . This allows the web page to update the local content of the page without affecting the user's operation . stay AJAX Programming ,XMLHttpRequest
Heavily used .
List of articles
1. understand XHR
- Use XMLHttpRequest(XHR) Objects can interact with the server , That is, sending ajax request
- The front end can get data , And without having to refresh the entire page
- This makes Web Pages can only update parts of the page , And not affect the user's operation
The difference is general http Ask for something to do with ajax request
- ajax Requests are special http request
- For the server side , It doesn't make any difference , The difference is on the browser side
- The browser sends a request : Only XHR or fetch That's what's coming out ajax request , All other requests are true and wrong ajax request
- The browser side receives a response
- (1) General request : Browsers generally display the response data directly , That is, refresh, as we often call it / Jump to the page
(2) ajax request : The browser does not update the interface , Just call the monitored callback Function and pass in response correlation number
3. API
-
XMLHttpRequest(): establish XHR Object's constructor
-
status: Response status code value , such as 200,404
-
statusText: Response status text
-
readyState: Read only property that identifies the status of the request
0: initial <br /> 1: open() after <br /> 2: send() after <br /> 3: In request <br /> 4: Request completed
-
onreadystatechange: binding readyState Change monitoring
-
responseType: Specify the corresponding data , If it is ’json’, After the response is obtained, the response body data will be automatically parsed
-
response: Response body data , The type depends on responseType The specified
-
timeout: Specify the request timeout , The default is 0 There is no limit
-
ontimeout: Binding timeout monitoring
-
onerror: Binding requests network error monitoring
-
open(): Initialize a request , Parameter is : (method, url[, async])
-
send(data): Send a request
-
abort(): Interrupt request
-
getResponseHeader(name): Gets the response header value for the specified name
-
getAllResponseHeaders(): Gets the string of all response headers
16. setRequestHeader(name, value): Set request header
4. XHR Of ajax encapsulation , It's also a simple version of axios
4.1 characteristic
- The return value of the function promise, The result of success is response, The abnormal result is error
- Can handle multiple types of requests :GET/POST/PUT/DELETE
- The parameter of the function is a configuration object
{
url: '', // Request address
method: '', // Request mode GET/POST/PUT/DELETE
params: {
}, // GET/DELETE Requested query Parameters
data: {
}, // POST or DELETE Requested body parameter
}
- Respond to json Data is automatically parsed to js The object of / Array
4.2 A simple version of axios Source code
function axios({
url,
method='GET',
params={
},
data={
}
}) {
// Return to one promise object
return new Promise((resolve, reject) => {
// Handle method( Turn capitalization )
method = method.toUpperCase()
// Handle query Parameters ( Joining together to url On ) id=1&xxx=abc
/* { id: 1, xxx: 'abc' } */
let queryString = ''
Object.keys(params).forEach(key => {
queryString += `${ key}=${ params[key]}&`
})
if (queryString) {
// id=1&xxx=abc&
// Remove the last &
queryString = queryString.substring(0, queryString.length-1)
// Receive url
url += '?' + queryString
}
// 1. Asynchronous execution ajax request
// establish xhr object
const request = new XMLHttpRequest()
// Open the connection ( Initialization request , No request )
request.open(method, url, true)
// Send a request
if (method==='GET' || method==='DELETE') {
request.send()
} else if (method==='POST' || method==='PUT'){
request.setRequestHeader('Content-Type', 'application/json;charset=utf-8') // Tell the server that the format of the requester is json
request.send(JSON.stringify(data)) // send out json Format requester parameters
}
// Monitoring of binding state changes
request.onreadystatechange = function () {
// If the request is not completed , End directly
if (request.readyState!==4) {
return
}
// If the response status code is [200, 300) Between represents success , Otherwise failure
const {
status, statusText} = request
// 2.1. If the request succeeds , call resolve()
if (status>=200 && status<=299) {
// Prepare the result data object response
const response = {
data: JSON.parse(request.response),
status,
statusText
}
resolve(response)
} else {
// 2.2. If the request fails , call reject()
reject(new Error('request error status is ' + status))
}
}
})
}
版权声明
本文为[Tell me Zhan to hide]所创,转载请带上原文链接,感谢
边栏推荐
- 【ElasticSearch搜索引擎】
- Tron smart wallet PHP development kit [zero TRX collection]
- CCR coin frying robot: the boss of bitcoin digital currency, what you have to know
- Jmeter——ForEach Controller&Loop Controller
- The AI method put forward by China has more and more influence. Tianda et al. Mined the development law of AI from a large number of literatures
- Chainlink brings us election results into blockchain everipedia
- Description of phpshe SMS plug-in
- 给字节的学姐讲如何准备“系统设计面试”
- What is the purchasing supplier system? Solution of purchasing supplier management platform
- 解决 WPF 绑定集合后数据变动界面却不更新的问题
猜你喜欢
行为型模式之备忘录模式
What is the purchasing supplier system? Solution of purchasing supplier management platform
Swagger 3.0 brushes the screen every day. Does it really smell good?
What is the meaning of sector sealing of filecoin mining machine since the main network of filecoin was put online
华为云微认证考试简介
Individual annual work summary and 2019 work plan (Internet)
大数据处理黑科技:揭秘PB级数仓GaussDB(DWS) 并行计算技术
Building a new generation cloud native data lake with iceberg on kubernetes
What are the criteria for selecting a cluster server?
【自学unity2d传奇游戏开发】如何让角色动起来
随机推荐
Git rebase is in trouble. What to do? Waiting line
GUI engine evaluation index
Swagger 3.0 brushes the screen every day. Does it really smell good?
面试官: ShardingSphere 学一下吧
The importance of big data application is reflected in all aspects
美团内部讲座|周烜:华东师范大学的数据库系统研究
Top 5 Chinese cloud manufacturers in 2018: Alibaba cloud, Tencent cloud, AWS, telecom, Unicom
It's easy to operate. ThreadLocal can also be used as a cache
Elasticsearch Part 6: aggregate statistical query
electron 實現檔案下載管理器
hdu3974 Assign the task線段樹 dfs序
What is the purchasing supplier system? Solution of purchasing supplier management platform
PHP application docking justswap special development kit【 JustSwap.PHP ]
Pollard's Rho algorithm
Custom function form of pychar shortcut key
Contract trading system development | construction of smart contract trading platform
html+vue.js 實現分頁可相容IE
常用SQL语句总结
A brief history of neural networks
事务的隔离级别与所带来的问题