【JavaScript】封装自己的Ajax函数

最终要实现的封装效果

封装一个名为itheima的Ajax函数,调用它可以发起GET或POST请求:

// '&'拼接
function parseObjectToString(obj){
    let arr = []
    for(let key in obj){
        arr.push(`${key} = ${obj[key]}`)
    }
    return arr.join('&')
}

// 使用它可以发起任意类型的请求和接受响应数据
// option.method:请求方式
// option.url:请求地址
// option.params:url参数
// option.data:请求体参数
// success:请求成功之后的回调函数
function itheima({method,url,params,data,success}){
    // 1、创建实例对象
    let xhr = new XMLHttpRequest()
    // 2、设置请求报文
    // if(是get方式,且有params——将params进行转换,再进行拼接)
    if(method.toLoweCase() == 'get' && params){
        url = url + '?' + parseObjectToString(params)
    }
    // 2.1、设置报文行
    xhr.open(method,url)
    // 2.2、设置报文头
    if(method.toLoweCase == 'post' && data){
        if(typeof data == 'string'){
            xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
            // 2.3、设置请求报文体
            xhr.send(data)
        }else if (typeof data == 'object'){
            xhr.setRequestHeader('Content-Type','application/json')
            // 2.3、设置请求报文体-转字符串
            xhr.send(JSON.stringify(data))
        }else{
            // 2.3、设置请求报文体
            xhr.send(data)
        }
    }else {
        // 2.3、设置报文体
        xhr.send(data)
    
    // 3、接受响应数据
    xhr.addEventListener('load',function(){
        // xhr的功能是发起请求获取数据,但是它不能决定数据如何处理
        // 把响应的JSON数据转换为JS对象
        let result = JSON.parse(xhr.response)
        // 调用用户传入的回调函数,将数据以回调参数的形式返回
        success(result)
    })
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值