您好,欢迎访问一九零五行业门户网

javascript原生ajax之mini-ajax.js

原生javascript实现的ajax方法,如:ajax.post();ajax.get();ajax.json();ajax.upload();
使用详情请访问:https://git.oschina.net/wuquanyao/mini-ajax.js
/*=================================================
 * mini-ajax.js
 * author: wuquanyao
 * email: wqynqa@163.com
 * ver: beta
 * date: 2015-10
 *===================for example===================
 * ajax.get('request.php',{a:2015,b:'wqyn'},function(response){
 *    console.log(response);
 * },'json');
 *=================================================
 * ajax.post('request.php',{c:'this is request!',d:'datamap'},function(response){
 *    console.log(response);
 * },'json');
 *=================================================
 * ajax.json('request.php',{xcv:'this is request!',vcd:'datamap'},function(response){
 *    console.log(response);
 * });
 *=================================================
 */
var ajax = {};
(function(ajax){
ajax.get = function(url,data,func,datatype){
        init(url,data,'get',func,datatype);
    }
ajax.post = function(url,data,func,datatype){
        init(url,data,'post',func,datatype);
    }
ajax.json = function(url,data,func){
        init(url,data,'get',func,'json');
    };
    ajax.upload = function(params){
        //do something, not realized, follow up!!
    }
    function init(url,data,requesttype,func,datatype){
if(!url){
            alert('request url can not be empty!');
            return false;
        }
var dlen = count(data);
        if(requesttype=='get'){
            if(dlen){
                var search = kvalue(data);
                url = (url.indexof('?')==-1)?(url+'?'+search):(url+search);
            }
            data = null;
        }else if(requesttype=='post'){
            if(!dlen)
            data = null;
            else
            data = kvalue(data);
        }
var xmlhttp        = false,
            requesttype    = requesttype || 'get';
            datatype       = datatype || 'json';
            func           = func || function(param){};
if(window.xmlhttprequest){
            xmlhttp = new xmlhttprequest();
        }else{
            try
            {
                xmlhttp = new activexobject(msxml2.xmlhttp.5.0);
            }catch(e){
                try
                {
                    xmlhttp = new activexobject(msxml2.xmlhttp.4.0);
                }catch(e){
                    try
                    {
                        xmlhttp = new activexobject(msxml2.xmlhttp);
                    }catch(e){
                        try{
                            xmlhttp = new activexobject(microsoft.xmlhttp);
                        }catch(e){
}
                    }    
                }
            }            
        }
if(!xmlhttp){
            alert('your browser does not support ajax!');
            return false;
        }
        if(xmlhttp.overridemimetype){ 
            xmlhttp.overridemimetype('text/html');
        }
        var accept =  {
            text: 'text/plain',
            html: 'text/html',
            xml : 'application/xml,text/xml',
            json: 'application/json,text/javascript'
        };
        //get,post,put,delete
        xmlhttp.open(requesttype,url,true);
        if(requesttype == 'post'){
            xmlhttp.setrequestheader('content-type','application/x-www-form-urlencoded;charset=utf-8');
            //xmlhttp.setrequestheader('content-type','multipart/form-data');
        }
        xmlhttp.setrequestheader('accept', accept[datatype]+';q=0.9,image/webp,*/*;q=0.8');
        xmlhttp.setrequestheader('accept-language', 'zh-cn,zh;q=0.8');
        xmlhttp.setrequestheader('cache-control', 'max-age=21600');
        xmlhttp.onreadystatechange = function(){
            if((xmlhttp.readystate == 4) && xmlhttp.status == 200){
                var d = xmlhttp.responsetext;
                if(datatype == 'json'){
                    d = json.parse(d);
                }
                func(d);
            };
        } 
        xmlhttp.send(data);
    }
function kvalue(params,sep)
    {
        var kv  = '';
            sep = sep || '&';
        for(key in params){
            kv+=key+'='+params[key]+sep;
        }
        return kv.substring(0,kv.length-1);
    }
function count(data)
    {
        var index = 0;
        for(i in data){
           index++;
        }
        return index;
    }
})(ajax);
qq截图20151027101029.png ( 115.41 kb 下载:24 次 )
ad:真正免费,域名+虚机+企业邮箱=0元
其它类似信息

推荐信息