Ajax的封装

ajax请求时所需要的参数:
url:请求地址
method:请求方式
async:是否异步
data:请求参数
dataType:返回的数据格式,string
success:成功的回调函数
error:失败的回调函数

function ajax(obj={}){
    //创建默认参数
    var defObj={
        url:'',
        method:'get',
        async:true,
        data:'',
        dataType:'string',
        success:()=>{},
        error:()=>{},
    }
    //判断传入的参数中,是否传递了请求路径
    if(obj.url== undefined){
        throw new Error("缺少请求路径")
    }

    //使用传入的参数去替换默认参数
    //遍历传入的参数
    for(var key in obj){
        //把当前遍历出来的键所对应的值,赋值给默认参数中同样的键
        defObj[key]=obj[key]
    }
    
    //创建ajax对象
    var xhr = new XMLHttpRequest()
    //判断默认参数中是否有请求数据
    if(defObj.data){
        //判断请求方式是否为get
        if(defObj.method.toLowerCase()=="get"){
            //配置请求信息
            xhr.open(defObj.method,defObj.url+"?"+defObj.data,defObj.async)
            //发送请求
            xhr.send()
        }else{
            //配置请求信息
            xhr.open(defObj.method,defObj.url,defObj.async)
            //设置请求头信息
            xhr.setRequestHeader("content-type","application/x-www-form-urlencoded")
            //发送请求
            xhr.send(defObj.data)
        }
    }else{
        //配置请求信息
        xhr.open(defObj.method,defObj.url,defObj.async)
        //发送请求
        xhr.send()
    }

    //4、监听ajax状态的改变
    xhr.onreadystatechange=function(){
        //判断ajax状态是否结束
        if(xhr.readyState==4){
            //判断http请求是否成功
            if(xhr.status==200){
                //获取响应结果
                var txt = xhr.responseText
                //判断返回的数据格式是否为string
                if(defObj.dataType=="string"){
                    //调用成功的回调函数
                    defObj.success(txt)
                    //当前函数中的txt,是实参
                }else if(defObj.dataType == 'json'){
                     //调用成功的回调函数
                     defObj.success(eval('('+txt+')'))
                }
            }else{
                //调用失败的回调函数
                defObj.error(xhr.status)
            }
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值