✊不积跬步,无以至千里;不积小流,无以成江海
思路
虽然在日常使用中,我们经常用 axios.get / axios.post这样的方法去使用ajax,但是不排除会遇见手写的方法去面试。介绍一下思路。
-
定义一个变量,变量名为xhr(XML Http Request)
-
定义请求发到的地方
-
如对应为GET,则用open的方法,定义方法+路径,对应请求体为空
-
如对应POST方法,则用send方法,对应的请求体为数据(自己造一个)
-
防御式编程:get之后如果成功(onload)的时候怎么办,如果失败(onerror)的时候怎么办
-
5实际上对应的是onreadystatechange事件(固定内容)。如果它的状态等于4,则执行后续内容,否则返回fail。当状态等于4时,如果状态码:大于等于200小于300或等于304
为啥状态是4 => 固定用法,对应数字为:0时,还未被创建;1时,open已经被调用;2时,send已被调用;3时,正在下载中,还没下载完;4时,已经下载成功。 为啥状态是这个范围?304表示内容没任何更改,其余为固定约束
实现
var XHR = new XMLHttpRequest()
XHR.open('GET', './xxx')
//XHR.onload () => {console.log('good')}
//XHR.onerror () => {}
XHR.onreadystatechange = function(){
if(request.readyState === 4) {
if(request.status >= 200 && request.status < 300 || request.status === 304{
success(XHR)
}else{
fail(XHR)
}
XHR.send('{"name": "123"}')