ajax函数封装
2018-10-25 本文已影响0人
大家好我系渣渣灰
//ajax封装
/obj={
type: 提交方式 string "",
url: 请求道服务器路径 string "",
async: 是否异步 布尔吉,
data:请求参数 json对象 {"key":"val"},
success:请求成功后的回调函数 function(d){},
fail:请求失败后的回调 function(err){} 可选填
}/
function $ajax(obj){
var xhr=null
try{
xhr=new XMLHttpRequest()
}catch(er){
xhr=new ActiveXObject("Microsoft XMLHTTP")
}
if(obj.type.toLowerCase()=="get"&&obj.data){ //当传请求参数时就进行路劲拼接
obj.url=obj.url+"?"+toUrl(obj.data);
}
xhr.open(obj.type,obj.url,obj.async);
if(obj.type.toLowerCase()=="get"){
xhr.send()
}else if(obj.type.toLowerCase()=="post"){
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded")
xhr.send()
}
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.status==200){
obj.success&&obj.success(JSON.parse(xhr.responseText))
}else{
obj.fail&&obj.fail(xhr.status+"错误") //
}
}
function toUrl(obj){ //此函数只用于 将obj中的data对象拼接成 key=val&key2=val
var arr=[]
for(var attr in obj){
arr.push(attr+'='+obj[attr])
}
return arr.join("&")
}
}