美文网首页
封装ajax

封装ajax

作者: 不算程序员 | 来源:发表于2019-08-15 10:16 被阅读0次

简单的封装ajax

function ajax(opt) {
    // 不传参数的时候 初始化
    let default_opt = {
      // 请求路经
        url: '',
      // 请求方式
        method: 'GET',
        // 是否异步
        async: true,
        // 数据
        data: {},
        // 回掉函数
        success: null
    }
    // 合并对象
    let newOpt = Object.assign(default_opt, opt);

    // 兼容创建ajax
    let xhr = XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHttp');

    // 监听事件
    xhr.onreadystatechange = function () {
        if (xhr.readyState === 4 && xhr.status === 200) {
            console.log(xhr.responseText)
            newOpt.success && newOpt.success(xhr.responseText)
        }
    }
    //判断是不是get
    let search = '';
    if(newOpt.method.toUpperCase() === 'GET'){
        search = '?' + Object.keys(newOpt.data).map(item => item+'='+newOpt.data[item]).join('&')
    }
    // 建立连接
    xhr.open(newOpt.method, newOpt.url + search, newOpt.async);

    let data = null;

    if(newOpt.method.toUpperCase() === 'POST'){
        xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
         data= bject.keys(newOpt.data).map(item => item+'='+newOpt.data[item]).join('&')
    }

    xhr.send(data)
}

调用

ajax({
    url: 'http://192.168.1.102:3000/api/data',
    method: 'POST',
    async: true,
    data: {
        pageNum: 1,
        pageSize: 10
    },
    success: function (data) {
        console.log(data)
    }
})

相关文章

网友评论

      本文标题:封装ajax

      本文链接:https://www.haomeiwen.com/subject/uouajctx.html