原生js实现ajax方法

function ajax(){  
    var ajaxData = {  
        type:arguments[0].type || "GET",  
        url:arguments[0].url || "",  
        async:arguments[0].async || "true",  
        data:arguments[0].data || null,  
        dataType:arguments[0].dataType || "text",  
        contentType:arguments[0].contentType || "application/x-www-form-urlencoded",  
        beforeSend:arguments[0].beforeSend || function(){},  
        success:arguments[0].success || function(){},  
        error:arguments[0].error || function(){}  
    }  
    ajaxData.beforeSend()  
    var xhr = createxmlHttpRequest();   
    xhr.responseType=ajaxData.dataType;  
    xhr.open(ajaxData.type,ajaxData.url,ajaxData.async);   
    xhr.setRequestHeader("Content-Type",ajaxData.contentType);   
    xhr.send(convertData(ajaxData.data));   
    xhr.onreadystatechange = function() {   
        if (xhr.readyState == 4) {   
            if(xhr.status == 200){  
                ajaxData.success(xhr.response)  
            }else{  
                ajaxData.error()  
            }   
        }  
    }   
}  
 
function createxmlHttpRequest() {   
    if (window.ActiveXObject) {   
        return new ActiveXObject("Microsoft.XMLHTTP");   
    } else if (window.XMLHttpRequest) {   
        return new XMLHttpRequest();   
    }   
}  
 
function convertData(data){  
    if( typeof data === 'object' ){  
        var convertResult = "" ;   
        for(var c in data){    
            convertResult+= c + "=" + data[c] + "&";    
        }    
        convertResult=convertResult.substring(0,convertResult.length-1)  
        return convertResult;  
    }else{  
        return data;  
    }  



jQuery:

ajax({  
    type:"POST",  
    url:"ajax.php",  
    dataType:"json",  
    data:{"val1":"abc","val2":123,"val3":"456"},  
    beforeSend:function(){  
        //some js code  
    },  
    success:function(msg){  
        console.log(msg)  
    },  
    error:function(){  
        console.log("error")  
    }  
})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值