亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

原生js模仿jQuery實現對Ajax的封裝

老铁们,还记得如何对原生ajax进行封装吗?注释较少,看看是否还能看的明白?

封装如下:
function ajax(obj){    //指定提交方式的默认值
    obj.type = obj.type || "get";    //设置是否异步,默认为true(异步)
    obj.async = obj.async || true;    //设置数据的默认值
    obj.data = obj.data || null;    var params=_params(obj.data);    //在路径后面添加时间戳加随机数防止浏览器缓存。
    obj.url+=(obj.url.indexOf("?")>-1?"&":"?")+"t="+((new Date()).getTime()+Math.random());    if(obj.type.toLowerCase()=="get" && params.length>0){//将转换后的data.与url进行拼接。
        obj.url+="&"+params;
    }    var xhr=new XMLHttpRequest();
    xhr.open(obj.type,obj.url,obj.async);    if(obj.type.toLowerCase()=="post"){
        xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        xhr.send(params)
    }else
        xhr.send(null);    if(obj.async){//异步调用
        //监听响应状态。
        xhr.onreadystatechange=function(){            if(xhr.readyState==4)//响应状态为4,数据加载完毕。
                callback();
        }
    }else//同步
        callback();    function callback(){        if(xhr.status==200){
            obj.success(xhr.responseText);
        }else{
            obj.error(xhr.status);
        }
    }    //将对象序列化,将对象拼接成url字符串
    function _params(data){        if(obj==null)            return obj;        var arr=[];        for(var i in data){
            arr.push(encodeURIComponent(i) + '=' + encodeURIComponent(data[i]));
        }        return arr.join("&");
    }
}
调用如下:
ajax({    type:"get",    data:{        name:"laoliu"
    },    url:"getUserByName.php",    async:false,    success:function(res){          //成功
    },    error:function(error){        //失败
    }
})



作者:张培跃
链接:https://www.jianshu.com/p/4b024347ce26



點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消