当前位置:网站首页>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]所创,转载请带上原文链接,感谢
边栏推荐
- CloudQuery V1.2.0 版本发布
- (1) ASP.NET Introduction to core3.1 Ocelot
- 【ElasticSearch搜索引擎】
- Individual annual work summary and 2019 work plan (Internet)
- 每个大火的“线上狼人杀”平台,都离不开这个新功能
- Look! Internet, e-commerce offline big data analysis best practice! (Internet disk link attached)
- 游戏开发中的新手引导与事件管理系统
- It is really necessary to build a distributed ID generation service
- Installing ns-3 on ubuntu18.04
- Asp.Net Core learning notes: Introduction
猜你喜欢
小游戏云开发入门
嘉宾专访|2020 PostgreSQL亚洲大会阿里云数据库专场:王涛
Outsourcing is really difficult. As an outsourcer, I can't help sighing.
面试官: ShardingSphere 学一下吧
【:: 是什么语法?】
StickEngine-架构11-消息队列(MessageQueue)
The importance of big data application is reflected in all aspects
每个大火的“线上狼人杀”平台,都离不开这个新功能
Named entity recognition in natural language processing: tanford core LP ner (1)
Git rebase is in trouble. What to do? Waiting line
随机推荐
Cglib 如何实现多重代理?
Live broadcast preview | micro service architecture Learning Series live broadcast phase 3
CCR coin frying robot: the boss of bitcoin digital currency, what you have to know
【應用程式見解 Application Insights】Application Insights 使用 Application Maps 構建請求鏈路檢視
It's time for your financial report to change to a more advanced style -- financial analysis cockpit
What are PLC Analog input and digital input
只有1个字节的文件实际占用多少磁盘空间
How to hide part of barcode text in barcode generation software
A brief history of neural networks
What course of artificial intelligence? Will it replace human work?
意外的元素..所需元素..
Ronglian completed US $125 million f round financing
Xmppmini project details: step by step from the principle of practical XMPP technology development 4. String decoding secrets and message package
Interpretation of Cocos creator source code: engine start and main loop
Staying up late summarizes the key points of report automation, data visualization and mining, which is different from what you think
C語言I部落格作業03
大道至简 html + js 实现最朴实的小游戏俄罗斯方块
What if the front end doesn't use spa? - Hacker News
[Xinge education] poor learning host computer series -- building step 7 Simulation Environment
Use modelarts quickly, zero base white can also play AI!