手写源码---ajax

手写ajax

 function ajax(options) {
            let method = options.method || 'GET',
                params = options.params, // GET请求携带的参数
                data = options.data, // POST请求传递的参数
                url = options.url + (params ? '?' + Object.keys(params).map(key => key + '=' + params[key]).join('&') : ''),
                async = options.async === false ? false : true,
                success = options.success,
                headers = options.headers;
            let xhr
                //  注意:IE5、6不兼容XMLHttpRequest,所以要使用ActiveXObject()对象,并传入 'Microsoft.XMLHTTP',达到兼容目的。
            if (window.XMLHttpRequest) {
                xhr = new XMLHttpRequest();
            } else {
                xhr = new ActiveXObject('Microsoft.XMLHTTP')
            }
            xhr.onreadystatechange = function() {
                /*
                readyState的五种状态详解:
                    0 - (未初始化)还没有调用send()方法
                    1 - (载入)已调用send()方法,正在发送请求
                    2 - (载入完成)send()方法执行完成,已经接收到全部响应内容
                    3 - (交互)正在解析响应内容
                    4 - (完成)响应内容解析完成,可以在客户端调用了
                 */

                if (xhr.readyState === 4 && xhr.status === 200) {
                    success && success(xhr.responseText)
                }
            }
            xhr.open(method, url, async);
            if (headers) {
                Object.keys(Headers).forEach(key => xhr.setRequestHeader(key, headers[key]))
            }
            method === 'Get' ? xhr.send() : xhr.send(data)
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值