ajax函数封装

//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("&")
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 我是一名80后两个孩子的宝妈,大宝11.二宝不到两周岁,两个孩子都是自己一手带大的,因为家里的种种原因老人没法来给...
    黄建玲阅读 421评论 0 2
  • 杠杆是为了撬动热爱,而不是撬动用户量。 打造一个受一小群用户热爱的产品会比打造一个受很多用户喜欢(请注意"喜欢"与...
    Stove3阅读 366评论 0 0
  • 注:文章写于12年。祝贺2013年6月22日申遗成功。 作为一位原生的云南人,是极其渴望大海的。 云南,除了层层叠...
    王思娓Surina阅读 717评论 0 0