封装一个简单的ajax

ajax请求细分的话可以分为5个步骤:

  1. 获取XMLHttpRequest对象

    let xhr = null;
    if(window.XMLHttpRequest){
        xhr = new XMLHttpRequest();
    } else{
        xhr = new ActiveXObject("Mricosoft.XMLHTTP");
    }
  2. 创建一个请求
    xhr.open(type,url,async)

     

  3.  发送状态
     

    xhr.send(null)    get
    xhr.send(params)   post

     

  4. 捕获请求状态

     

    xhr.onreadystatechange = function (){
    
    }

     

  5. 接受返回值
     

    if(xhr.readyState == 4 && xhr.status == 200){
       options.success(xhr.responseText);
    }

     

 ajax完整的封装:

let baseURL = 'http://localhost:3000/';
function ajax(options){
    let xhr = null;
    let params = paramsHandle(options.data);
    if(window.XMLHttpRequest){
        xhr = new XMLHttpRequest()
    } else {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if(options.type == "GET"){
        xhr.open(options.type,baseURL+options.url + "?"+ params,options.async);
        xhr.send(null)
    } else if(options.type == "POST"){
        xhr.open(options.type,baseURL+options.url,options.async);
        xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
        xhr.send(params);
    }
    xhr.onreadystatechange = function(){
        if(xhr.readyState == 4 && xhr.status == 200){
            options.success(xhr.response);
        }
    }
}
function paramsHandle(data){
    let arr = [];
    for(let key in data){
        arr.push(key + "=" + data[key]);
    }
    return arr.join("&");
}

ajax的使用:

ajax({
    url : "login", 
    type : "POST", 
    async : true,  
    data : { 
        name : "zhangsan",
        password : "123456"
    },
    success : function(res){
        console.log(res);
    }
})


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值