微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用promise封装的ajax

promise封装的ajax

解决请求里面在套用请求问题

代码

function promiseAjax(options) {
    return new Promise((resolve, reject) => {
        var xhr = new XMLHttpRequest();
        // 获取请求参数
        var params = formdata(options.data); //a=1&b=2
        // get请求
        if (options.type == "GET") {
            xhr.open(options.type, options.url + '?' + params, options.isAsync);
            xhr.send();
        }
        //post请求
        if (options.type == "POST") {
            xhr.open(options.type, options.url, options.isAsync);
            xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
            xhr.send(params);
        }
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 ) {
              if (xhr.status == 200) {
                  resolve(xhr.responseText);
              }else{
                  reject('错误');
              }
            }
        }
    })
}
// 将对象 {  a:1 ,b:2 } 转为  a=1&b=2
function formdata(obj) {
    var arr = [];
    for (var k in obj) {
        arr.push(k + '=' + obj[k]);
    }
    return arr.join('&')
}

调用

promiseAjax({
    type: '请求方式GET/POST',
    url: '请求地址',
    data: {
    	// 请求的参数
    },
    isAsync: true   // 是否异步
}).then(data => {
    // 成功的回调
})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐