Ajax 函数封装

ajax 是前端数据交互的重要知识,想做好数据交互就一定要对ajax深入理解.并且熟练运用.
在这里,封装一下ajax 方便重用.

function json2url(json){
    json.t = Math.random();
    var arr = [];
    for(var name in json){
        arr.push(name+'='+encodeURIComponent(json[name]));
    }
    return arr.join('&');
}
//url,data,type,success,error
function ajax(json){
    if(!json.url){return;}
    json = json||{};
    json.type = json.type||'GET';
    json.data = json.data||{};
    json.timeout = json.timeout||10000;
    //1.创建对象
    if(window.XMLHttpRequest){
        //chrome FF
        var oAjax = new XMLHttpRequest();
    }else{
        //IE低版本 
        var oAjax = new ActiveXObject('Microsoft.XMLHTTP');
    }
    switch(json.type.toLowerCase()){
        case 'get':
        //2.建立连接  //是否异步
        oAjax.open('GET',json.url+'?'+json2url(json.data),true);
        //3.发送
        oAjax.send();
        break;
        case 'post': 
        oAjax.open('POST',json.url,true);
        oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        oAjax.send(json2url(json.data));
        break;
    }
    json.loading&&json.loading();
    //超过json.timeout 后认为失败 不在请求
    var timer = setTimeout(function(){
        json.error&&json.error();
        json.complete&&json.complete();
        oAjax.onreadystatechange = null;
    },json.timeout);
    
    //4.接收 
    //当网络状态改变的时候
    oAjax.onreadystatechange = function(){
        //网络状态
        if(oAjax.readyState == 4){
            //http状态
            if(oAjax.status>=200&&oAjax.status<300||oAjax.status==304){
                //服务器返回的数据
                clearTimeout(timer);
                json.success&&json.success(oAjax.responseText); 
                json.complete&&json.complete();
            }else{
                clearTimeout(timer);
                json.error&&json.error(oAjax.status);
                json.complete&&json.complete();
            }
        }
    }; 
}

上面是一个比较完整的 ajax.js 用的时候 就可以引入这个函数 ,然后调用

ajax(json){
} 

json: 把参数以json的格式传进去 就可以了.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,126评论 25 708
  • 1.早起: day1.6:30起床,洗漱做早餐,准备上班。 2.远动: 下班吃完饭后,习惯性的慢跑三公里。 3.晚...
    zhzzjun阅读 212评论 0 1
  • 其实,别人真的没有对你滔滔不绝的倾诉而有丝毫感动
    oranda阅读 163评论 0 1
  • 前段时间把app适配一下iPad,再提交的时候出了一些问题 ERROR ITMS-90474: "Invalid ...
    YoRuo_阅读 1,752评论 0 1
  • 常言春雨贵如油, 今年不与往年同, 春季到来雨茫茫, 连续下了好几场。 总觉气候不寻常, 白昼不阴又不阳, 夜晚春...
    笨愚阅读 211评论 0 0

友情链接更多精彩内容