Promise对象实现Ajax封装

Promise对象实现Ajax封装

故心故心故心故心小故冲啊



一、封装ajax

/*
*默认methods:'GET'
*默认url:'http://localhost:3306'
*默认data:null
*/
const axios = ({ methods = 'GET', url = 'http://localhost:3306', data = null }) => {
    var promise = new Promise((resolve, reject) => {
        //发送请求
        // 低版本IE兼容 
        var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : ActiveXobject("Msxml12.XMLHTTP");
        // var xhr = new XMLHttpRequest();
        xhr.open(methods, url);
        if (methods.toUpperCase == 'GET') {
            xhr.send();
        } else {
            //post delete  put需要添加请求头
            xhr.setRequestHeader("Content-Type", "application/json");
            xhr.send(JSON.stringify(data))
            console.log(data);
        }
        xhr.onreadystatechange = () => {
            //请求成功
            if (xhr.readyState != 4) return;
            if (xhr.status === 200) {
                //返回数据 拿resolve接受
                resolve(xhr.responseText);
            }
            else {
                //失败 返回失败状态
                reject(xhr.status);
            }
        }
    })
    //最后返回一个promise
    return promise;
}

二、调用

//node中做了俩个测试接口
//测试
app.post('/api/test',function(req,res){
    console.log(req.body);
    res.send(JSON.stringify(data));
})

app.get('/api/test2',function(req,res){
    console.log(req.query);
    res.send(JSON.stringify(data));
})

//调用1
 document.querySelector(".btn").onclick = function () {
        //调用
        var p = axios({
            methods: 'post',
            url: 'http://localhost:3000/api/test',
            data: { 'name': 'xm', "age": 18 }
        })
        p.then(res => {
            console.log("成功了");
            //接受后端返回来是数据
            console.log(res);
        }).catch(err => {
            //接受错误信息
            console.log("失败了");
            console.log(err);
        })
    }
//调用2
  document.querySelector(".btn2").onclick = function () {
        var p2 = axios({
            methods: "get",
            url: "http://localhost:3000/api/test2?name=hahaha&&age=18",
        })
        p2.then(res => {
            console.log("成功了");
            //接受后端返回来是数据
            console.log(res);
        }).catch(err => {
            //接受错误信息
            console.log("失败了");
            console.log(err);
        })
    }

结果截图

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值