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("&")
    }
}
上一篇下一篇

猜你喜欢

热点阅读