原生js实现ajax方法(超简单)
上一篇文章写到原生js取代jquery的一些常用函数:原生js仿jquery一些常用方法,那么,ajax如何实现呢?如下是一个比较完整的ajax()
functionajax(){
varajaxData={
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()
varxhr=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()
}
}
}
}
functioncreatexmlHttpRequest(){
if(window.ActiveXObject){
returnnewActiveXObject("Microsoft.XMLHTTP");
}elseif(window.XMLHttpRequest){
returnnewXMLHttpRequest();
}
}
functionconvertData(data){
if(typeofdata==='object'){
varconvertResult="";
for(varcindata){
convertResult+=c+"="+data[c]+"&";
}
convertResult=convertResult.substring(0,convertResult.length-1)
returnconvertResult;
}else{
returndata;
}
}
使用格式跟jquery的ajax差不多:
ajax({
type:"POST",
url:"ajax.php",
dataType:"json",
data:{"val1":"abc","val2":123,"val3":"456"},
beforeSend:function(){
//somejscode
},
success:function(msg){
console.log(msg)
},
error:function(){
console.log("error")
}
})
以上就是小编为大家带来的原生js实现ajax方法(超简单)的全部内容了,希望对大家有所帮助,多多支持毛票票~