
/*
 * request  */
var Request=function(){this.requestObj=null;this.url= null;this.async= false;this.stateContainer = null;this.outTimeObj= null;this.outTime= 1;this.params= "";this.paramsTotal=0;this.STATE="类实例化";this.SERVERDATA = null};Request.prototype.setUrl=function(url){if(url&&typeof(url)=='string')this.url=url};Request.prototype.setAsync = function(boolean){if(boolean&&typeof(boolean)=='boolean')this.async=boolean};Request.prototype.setStateContainer=function(obj){if(obj)this.stateContainer=obj};Request.prototype.setParams=function(hashTable){if(hashTable&&typeof(hashTable)=='object'){for(key in hashTable){this.paramsTotal++;this.params+=(key+"="+ hashTable[key]+"&")}this.params=this.params.replace(/&{1}$/,"")}else{this.onError("setParams: 请传入hashTable类型的数据");return false}};Request.prototype.setHeader=function(method){if(this.params=="")var method="GET";switch(method){case"POST":{this.requestObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");this.requestObj.setRequestHeader("Content-length", this.paramsTotal);this.requestObj.setRequestHeader("Connection", "close")}; break;case"GET":{this.requestObj.setRequestHeader("Content-type", "application/x-www-form-urlencoded")}};method = null};Request.prototype.setState=function(str){if(!this.stateContainer)return false;if(this.stateContainer.tagName=='INPUT'||this.stateContainer.tagName=='input'){this.stateContainer.value = str}else if(this.stateContainer.tagName=='TEXTAREA'||this.stateContainer.tagName=='textarea'){} else if(this.stateContainer.tagName == 'TD'||this.stateContainer.tagName=='td') {this.stateContainer.firstChild.nodeValue=str}else{this.stateContainer.innerHTML=str};this.STATE = str};Request.prototype.init=function(){try{this.setState("通信协议初始化");if(window.XMLHttpRequest){this.requestObj=new window.XMLHttpRequest()}else if(window.ActiveXObject){try {this.requestObj=new ActiveXObject("Msxml2.XMLHTTP")}catch(e){this.requestObj=new ActiveXObject("Microsoft.XMLHTTP")}}else{this.onError("init: 创建对象失败,未知浏览器");return false}}catch(e){}};Request.prototype.post=function(){this.setState("准备以POST方式发送请求");if(this.url==null){this.onError("post: url是必须的参数");return false};this.loading();this.requestObj.onreadystatechange=function(){this.start() }.bind(this);this.requestObj.open("POST",this.url,true);this.setHeader("POST");this.requestObj.send(this.params)};Request.prototype.get=function(){this.setState("准备以GET方式发送请求");if(this.url==null){this.onError("get: url是必须的参数");return false}if(this.onLoading !=null)this.onLoading();this.requestObj.onreadystatechange=function(){this.start()}.bind(this);this.requestObj.open("GET",this.url,true);this.setHeader("GET");this.requestObj.send(null)};Request.prototype.loading=function(){try{this.setState("正在采集数据...");window.setTimeout(function(){this.onLoading()}.bind(this),0)}catch(e){}};Request.prototype.start=function(){if(this.requestObj.readyState==4){this.setState("分析返回数据...");if(this.requestObj.status==200||this.requestObj.status==0){try{this.setState("读取数据成功...");this.SERVERDATA=this.requestObj.responseText;window.setTimeout(function(){this.onLoad(this.SERVERDATA)}.bind(this),0); this.requestObj.close();return false}catch(e){}}else{try{this.setState("读取数据时发生了错误, 错误代码为:"+this.requestObj.status);window.setTimeout(function(){this.onError("读取数据时发生了错误, 错误代码为:"+this.requestObj.status)}.bind(this),0);this.requestObj.close();return false}catch(e){}}}};Request.prototype.getServerData=function(){if(this.SERVERDATA==null){this.onError("返回数据为空");return false}return this.SERVERDATA};