美文网首页
Ajax 函数封装

Ajax 函数封装

作者: 山豆山豆 | 来源:发表于2016-12-06 08:22 被阅读0次

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的格式传进去 就可以了.

相关文章

  • ajax函数封装

    ajax函数封装 封装一个ajax

  • 原生js封装AJAX

    函数封装: 2.封装Ajax

  • 原生js封装AJAX

    函数封装: 2.封装Ajax

  • 微信小程序-ajax的使用和封装

    微信小程序的ajax使用方法: ajax 函数封装 在我们做项目的时候,为了方便复用,需要封装ajax函数方便随时...

  • js 原生ajax的封装

    概念 ajax是前端常用技术,今天用原生js封装了一个ajax函数,类似于jquery库的$.ajax()函数,大...

  • ajax函数封装

    //ajax封装/obj={type: 提交方式 string "",url: 请求道服务器路径 ...

  • AJAX封装函数

    用ajax的局部刷新来给网站提升用户体验我们已经用过很多了,ajax已然成为了前端开发最重要的“工具”之一。 但是...

  • AJAX 函数封装

    封装函数,采用面向对象的形式封装,用函数包裹,防止空间浪费,函数附带转码功能 自调用函数(function( ){...

  • Ajax 函数封装

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

  • Ajax函数封装

    函数说明: _type:选择数据获取方式 --- get / post _url:获取数据的基础网址链接 call...

网友评论

      本文标题:Ajax 函数封装

      本文链接:https://www.haomeiwen.com/subject/mbglmttx.html