js:ajax封装

ajax是主要靠XMLHttpRequest对象来完成与后台的链接。
get方式

//这是异步
        var xhr=new XMLHttpRequest();
        xhr.addEventListener("load",loadHandler);
        //        发送方式使用GET方式发送,就是在URL地址中在?后面添加参数=值的方式,并且使用&作为数据的组合
        //        使用GET方式发送适用于小数据,无需保密,尽量数据的格式不要太复杂,经常用于表单数据的发送
        xhr.open("GET","http://localhost:8080?user=xixi&password=123456",true);
        xhr.send();
         function loadHandler(e) {
//              具体返回的时间不确定
              console.log(JSON.parse(this.response));
          }

post方式

		var obj={user:"xixi",password:123};
        var xhr=new XMLHttpRequest();
        xhr.addEventListener("load",loadHandler);
        xhr.open("POST","http://localhost:8080");
        xhr.send(encodeURIComponent(JSON.stringify(data)));//发送的内容写在这里,变成字符串,然后进行编码
        function loadHandler(e) {
            console.log(JSON.parse(decodeURIComponent(this.response)));//先解码,然后在转成字符串
        }

2种方式进行封装

 AjaxTool(method, url, data, fn) {
            var xhr;
            if (window.ActiveXObject) { //ie浏览器
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            } else if (window.XMLHttpRequest) { //其他浏览器
                xhr = new XMLHttpRequest();
            }
            if (method == 'get') {
                url = this.urlJoin(url, data)
                data = null
            }
            xhr.open(method, encodeURIComponent(url));
            xhr.send(data ? encodeURIComponent(JSON.stringify(data)) : '')
            xhr.addEventListener('load', function () {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    fn(this.response)//回调函数
                } else {
                    fn('err')
                }

            })
        },
        //将对象拼接到url中
        urlJoin(url, obj) {
            var list = []
            for (var key in obj) {
                if (obj.hasOwnProperty(key)) {//判断一个对象属性里是否包含某个key
                    list.push(`${key}=${obj[key]}`)
                }
            }
            return `${url}?${list.join('&')}`//用了es6模板字符串
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值