AJAX封装

作者: 函数function | 来源:发表于2016-11-29 22:55 被阅读33次

    建议把所有代码放在.js文件中:

    function ajax(json){
        if(!json.url)return;
        json.data=json.data || {};
        json.type=json.type || 'get';
        json.time=json.time || '3000';
        
        var timer=null;
        //创建一个ajax对象
        if (window.XMLHttpRequest) {
            var oAjax=new XMLHttpRequest();
        } else{
            //兼容ie低版本
            var oAjax=new ActiveXObject('Microsoft.XMLHTTP');
        }
        switch(json.type.toLowerCase()){ //忽略大小写
            case 'get':
                oAjax.open('GET',json.url+'?'+str2Json(json.data),true);
                oAjax.send();
            break;
            case 'post':
                oAjax.open('POST',json.url,true);
                //设置一个请求头
                oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
                oAjax.send(json2Str(json.data));
            break;
        }
        //监控状态
        oAjax.onreadystatechange=function(){
            if(oAjax.readyState==4)
            {
                if(oAjax.status>=200&&oAjax.status<300 ||oAjax.status==304){
                    json.success && json.success(oAjax.responseText);
                }else{
                    json.error && json.error(oAjax.status);
                }
                clearTimeout(timer);
            }
        };
        timer=setTimeout(function(){
            alert('服务器超时!')
            oAjax.onreadystatechange=null;
        },json.time);
    };
    
    //百度接口https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=a&cb=show
    //处理接口?后边的如 :wd=a&cb=show
    function json2Str(json){
        json.t=Math.random();//加随机数
        var arr=[];
        for(var name in json){
            arr.push(name+'='+json[name]);
        }
        return arr.join('&');
    };
    

    相关文章

      网友评论

        本文标题:AJAX封装

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