原生js封装Ajax

ajax封装

function ajax(options) {
    var defaults={
        type:'get',
        url:'',
        data:{},
        dataType:'json',
        success:function (result) {
            console.log(result);
        },
        async:true
    }
    //覆盖原对象的默认值
    object.assign(defaults,options);
    //创建一个ajax对象 (兼容)
    var xmlhttp;
    if (window.XMLHttpRequest)
    {
        //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
        xmlhttp=new XMLHttpRequest();
    }
    else
    {
        // IE6, IE5 浏览器执行代码
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    var params="";
    //拼接字符串  url其后紧跟
    for(var attr in defaults.data){
        params+=attr+'='+defaults.data[attr]+'&';
    }
    if(params){
        //截取字符串
        params=params.substring(0,params.length-1);
    }
    //判断get/post类型
    if (defaults.type=='get'){
        defaults.url += '?' +params;
    }
    xhr.open(defaults.type,defaults.url,defaults.async);
    if(defaults.type == 'get') {
        xhr.send();
    }else if(defaults.type=='post'){
        //post像服务器发送请求
        xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        xhr.send(params);
    }

    if(defaults.async){
        xhr.onreadystatechange=function () {
            if(xhr.readyState==4 && xhr.status==200){
                var result=null;
                if(defaults.dataType=='json'){
                    result=xhr.responseText;
                    result=json.parse(result);
                }else if(defaults.dataType='xml'){
                    result=xhr.responseXML;
                }else{
                    result=xhr.responseText;
                }
                //输出
                defaults.success(result);
            }
        }
    }else{
        xhr.οnlοad=function () {
            if(xhr.readyState==4 && xhr.status==200){
                var result=null;
                if(defaults.dataType=='json'){
                    result=xhr.responseText;
                    result=json.parse(result);
                }else if(defaults.dataType='xml'){
                    result=xhr.responseXML;
                }else{
                    result=xhr.responseText;
                }
                //输出
                defaults.success(result);
            }
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值