﻿function createRequest() {
    if(window.XMLHttpRequest){ //非IE浏览器及IE7(7.0及以上版本)，用xmlhttprequest对象创建
        return new XMLHttpRequest();
    }else if(window.ActiveXObject){ //IE(6.0及以下版本)浏览器用activexobject对象创建,如果用户浏览器禁用了ActiveX,可能会失败.
        return new ActiveXObject("Microsoft.XMLHttp");
    }else{return false;}
}
  
function ajax(o){
    o={
        url:o.url,
        type:o.type.toUpperCase()||'POST',
        parm:o.parm||null,
        res:o.res||1,//1:string 2:xml 3:number
        succ:o.succ||null,
        fail:o.fail||null
    };
    var xmlhttp=createRequest();
    if(!xmlhttp){
        alert('您的浏览器不支持Ajax,请升级浏览器.');
        return;
    }
    xmlhttp.onreadystatechange=function(){
        if (xmlhttp.readyState==4){
            if (xmlhttp.status==200){
                if(o.succ)o.succ((function(){switch(o.res){case 1:return xmlhttp.responseText;case 2:return getXMLResult(xmlhttp.responseText);case 3:return xmlhttp.responseText*1;}})());
            }else{
                if(o.fail)o.fail(xmlhttp.responseText);
            }
        }
    };
    if(o.type=='GET'){
        if(o.parm){o.url+='?'+o.parm+'&rnd='+Math.round(Math.random()*100);}
    }
    xmlhttp.open(o.type,o.url,true);
    if(o.type=='POST'){
        xmlhttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    }
    if(xmlhttp.overrideMimeType)xmlhttp.setRequestHeader('Connection','close');
    if(o.type=='POST'){xmlhttp.send(o.parm);}
    else{xmlhttp.send(null);}
}
function serialize(a){
    var res=[];
    //表单元素数组
    if(a.constructor==Array){
        for(var i=0;i<a.length;i++){
            res.push(a[i].id+'='+encodeURI(a[i].value));
        }
    }else{
        for(var i in a){
            res.push(i+'='+encodeURI(a[i]));
        }
    }
    return res.join('&');
}
//创建一个dom对象
function xml(str){
    var xmlDoc;
    if(window.ActiveXObject){
        xmlDoc = new ActiveXObject('Microsoft.XMLDOM');
        xmlDoc.async = false;
        arguments.length>1?xmlDoc.load(str):xmlDoc.loadXML(str);
    }else if(document.implementation&&document.implementation.createDocument){
        if(arguments.length>1){
            xmlDoc = document.implementation.createDocument('', '', null);
            xmlDoc.load(str);
        }else{
            try{
                domParser = new DOMParser();
                xmlDoc = domParser.parseFromString(str, 'text/xml');
            }catch(e){alert(e);return null;}
        }
    }else{return null;}
    return xmlDoc;
}
function getXMLResult(data){
    var doc=new xml(data);
    if(doc){return doc.getElementsByTagName("string")[0].firstChild.nodeValue;}
    else{alert('浏览器不支持XML');return null;}
}
