前言
原生javascript实现ajax是一个比较老套但经常出现的面试题,主要是为了筛选掉长期依赖类库编程的前端。对于新手也是个不错的练习。
Ajax实现步骤
创建XMLHttpRequest对象
1 | var XHR; |
PS:ActiveXObject对象在IE11中已移除
发送请求
首先调用open
方法,接受三个参数
type|String
:表示请求的类型,包括get,post等url|String
:表示请求的URLasync|Boolean
:表示是否异步发送请求
然后调用send
方法,接受一个参数即要作为请求主体发送的数据
1 | if(type == 'GET'){ |
PS: 理论上GET方法也可以有body,但一般来说约定GET的参数都放在URL上,所以type为GET时send的参数一般为null。
收到响应
当时XHR的readyState
改变时就会触发readystatechange
事件。通常readyState
为4时表示已经接收到所有响应数据。可以根据XHR的status
属性(即HTTP状态码)确定请求是否成功。
1 | XHR.onreadystatechange = function(){ |
到这里整个AJAX已经完成了,接下来就是调用回调函数实现需求了。
一个小型的ajax函数实现
曾经写的一个小作业
1 | function ajax(url, options) { |
总结
第一次写技术博客,边写边改代码,不得不说写的时候回头看代码真是漏洞百出……
PS:以后在博客里加上emoji,没表情简直玩不起来。