今天我们来总结一些如何手写 AJAX。
首先,我们要明确什么是 AJAX,其全称是 Asynchronous JavaScript and XML,翻译成中文就是指异步的 JS 以及 XML。因为现在使用 XML 的人已经很少了,我们也可以大致理解为 JSON。
AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
接下来,我们来手写一个简单的 AJAX:
var request = new XMLHttpRequest()
request.open('GET','/xxx')
//request.onload = ()=>{
//console.log('得到内容')
//}
//request.onerror = ()=>{}
request.onreadystatechange = function(){
if(request.readyState === 4){
if(requset.status >= 200 && request.status < 300 || requset.status === 304){
success(request)
}else{
fail(request)
}
}
}
request.send('{"name": "frank"}')//GET 没有消息体
其中 onload 方法通常不推荐,面试官可能更喜欢使用 onreadystatechange 方法来监听请求是否成功。其中需要注意的有几个点:
- 首先是
readyState的数值,如果是等于4,则代表下载完毕,具体可以查看 MDN 的文档 - 状态码在 200 到 300 之间或者 304 表示请求成功,其他可以参考 MDN 文档
- 在成功时调用
success函数,失败时调用fail函数。