ajax封装

方法一:

//ajax封装---简单

let xhr =new XMLHttpRequest() || new ActiveXObject("Microsoft.XMLHTTP");

function myAjax(method,url,params,callback,async){//async-false 同步 true-异步
   if(async==undefined){//如果用户没有指定同步还是异步,那么就是异步
       async=true;
   }

   xhr.onreadystatechange=function (){
       if(xhr.readyState==4&&xhr.status==200){
           callback()
       }
   }

   if(method=="get"){
       xhr.open(method,url+"?"+params,async)
       xhr.send(null)
   }else if(method=="post"){
       xhr.open(method,url);
       xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
       xhr.send(params)
   }




}

// myAjax("get","/getUser.do","user=admin",showMsg)

方法2

//ajax封装

/*
*
* ajax({
*   url:"/login.do",
*   type:"post",
*   data:{
*       username:"admin",
*       password:123
*   }, ==> username=admin && password=123
*   async:true,
*   success:function(){},
*   error:function(){}
* })
*
*
* */

function ajax(json){
    // console.log(json.url);
    // console.log(json.async);//

    json=json || {};//是否传递了参数,如果没有传参就赋值空对象

    //判断向服务器发起请求的地址是否存在,如果不存在就结束
    if(!json.url){
        return;
    }

    //判断是否有type属性,如果没有type属性默认就是get请求
    json.type=json.type || "get";

    //判断data,如果没有就是空对象
    json.data=json.data || {}

    //判断是否有同步异步的设置,如果没有默认异步

    // json.async= json.async || true; ---错误写法,这样写永远只有true

    if(json.async==undefined){
        json.async= true
    }else{
        json.async= json.async;
    }


    let xhr =new XMLHttpRequest() || new ActiveXObject("Microsoft.XMLHTTP");


//回调函数
    xhr.onreadystatechange=function (){
        console.log(xhr.readyState)
        if(xhr.readyState==4){
            // console.log(xhr.status)
            if(xhr.status>=200 && xhr.status<=300 || xhr.status==304){
                //成功了
                console.log("成功了")
                json.success&&json.success(xhr.responseText);
            }else{
                json.error&&json.error(xhr.status);
            }

        }
    }




    //判断post 还是 get请求
    switch (json.type.toLowerCase()){
        case "get":
            xhr.open("get",json.url+"?"+toJson(json.data),json.async)// {} username=admin&&password=123
            xhr.send(null);
            break;
        case "post":
            xhr.open("post",json.url,json.async)
            xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded")
            xhr.send(toJson(json.data));
            break;
    }






}
function toJson(json){
    let arr=[]
    for(let name in json){
        arr.push(name+"="+json[name]);    }

    return arr.join("&") //username='admin'&&password=123
}




// ajax(canshu1,canshu2,canshu3)
// ajax({
//     canshu1:"",
//     canshu2:"",
//     canshu3:""
// })

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰鸦893

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值