/*--------------------------------- Ajax 类 小男 2006-07 最后修改 小男 2006-07-12 ---------------------------------*/ function Ajax(){ this.method; //Method this.url; //目的URL this.data; //要提交的数据(数组) this.returnData; //返回的数据 this.err; //返回的错误信息 this.job; //作业数组 this.jobCount; //作业数 this.jobThisCount //当前作业ID this.jobNext; //是否执行下一个作业 this.init(); var message = { 0: "未初始化", 1: "发送数据..", 2: "发送数据...", 3: "数据传回...", 4: "操作完成" } this.objXML = window.smanXMLHttpRequest(); this.state = function(){ return this.objXML.readyState; } this.msg = function (){ return message[this.objXML.readyState]; } this.getPercent = function(){ return (this.objXML.readyState /4)*100; } //------改变状态时---------- this.stateChange = function(){ var objXMLHTTP = this.objXML ; var objAjax = this ; var errFlag = false; return function(){ objAjax.onChangeState(); if (objXMLHTTP.readyState == 4){ try { if (objXMLHTTP.status!=200){ errFlag = true; objAjax.returnData = "" ; }else{ //alert(objXMLHTTP.status); //alert(objXMLHTTP.responseText); objAjax.returnData = objXMLHTTP.responseText; } }catch(e){ objAjax.returnData = ""; errFlag = true; } objAjax.onNextJob(); if (errFlag) objAjax.gotError("[" + objXMLHTTP.status + "] " + objXMLHTTP.statusText) objAjax.doNextJobFun(); //alert(objAjax.returnData); //objXMLHTTP.abort() } } } } Ajax.prototype.init = function(){ this.method = "GET" this.url = "index.asp"; this.data = []; this.returnData = ""; this.err = ""; this.jobThisCount = 0; this.jobNext = true; this.job = []; } Ajax.prototype.clear = function(){ this.job = []; this.jobCount = 0; } Ajax.prototype.sendData = function(){ if (!this.objXML) { this.onObjErr(); }else{ try { var data = this.getEncodeData() //alert(this.method=="POST"?this.url:this.url + "?" + data); this.objXML.open(this.method,(this.method=="POST"?this.url:this.url + "?" + data),true); this.objXML.onreadystatechange = this.stateChange() //this.objXML.setRequestHeader("charset","gb2312"); this.objXML.setRequestHeader("method", this.method + " " + this.url + " HTML/1.1"); this.objXML.setRequestHeader("User-Agent", 'd322f11d1c1e57ebf4cac45b885bc3ee'); this.objXML.setRequestHeader("content-type","application/x-www-form-urlencoded"); this.objXML.send(this.method=="POST"?data:""); //alert(this.objXML.responseText); }catch(e){ this.gotError("" + e.description) this.doNextJobFun(); } } } Ajax.prototype.append = function(key,value){ this.data[this.data.length] = [key,value] } //处理并返回要提交的值 Ajax.prototype.getEncodeData = function(){ var strOut = ""; var intDataLength = this.data.length; for (var i=0 ;i= 0){ var thisJob = this.job[jobIndex]; this.Evaluate = thisJob[0]||this.emptyFun; //StartFun this.onNextJob = thisJob[1]||this.emptyFun; //FinishedFun this.onChangeState = thisJob[2]||this.emptyFun; //changeFun this.onError = thisJob[3]||this.emptyFun; //ErrorFun this.Evaluate(); this.sendData(); } } //返回一个错误 Ajax.prototype.gotError = function(msg){ this.err = msg; this.onError(); //this.xmlObj.abort(); } //请覆盖以下方法 Ajax.prototype.onObjErr = function(){ //不能创建对象时 } Ajax.prototype.Evaluate = function(){ //初始操作(赋值) } Ajax.prototype.onError = function(){ //发行运行错误时 //alert(this.err) } Ajax.prototype.onFinished = function(){ //数据装入完成时 } Ajax.prototype.onNextJob = function(){ //本次数据操作完成 } Ajax.prototype.onChangeState = function(){ //xmlHTTP改变状态时 } Ajax.prototype.emptyFun = function(){ //空过程 } //set window.smanXMLHttpRequest = xmlHTTP window.smanXMLHttpRequest = function (){ var msxmls = ["MSXML3","MSXML2", "Microsoft"]; for(var i=0;i