prototype操作ajax的高难度问题(在线等)
var JSUpload = Class.create();
JSUpload.prototype = {
initialize : function(form){
this.theUniqueID = 0;
this.processDone = $("PercentDone"); //process bar
this.totalSize = $("TotalSize");
this.sizeComplete = $("SizeCompleted");
this.transferRate = $("TransferRate");
this.elapsedTime = $("ElapsedTime");
this.timeLeft = $("TimeLeft");
this.iframe = $("ifame_upload");
this.bar = $("bar");
this._form = form;
this._action = "/humanreport/smartUpload";
this.oXmlDoc = Ajax.getTransport();
},
uploadData : function(){
this.theUniqueID = (new Date()).getTime() % 1000000000;
this.processDone.style.width = 0;
this.totalSize.innerHTML = "";
this.sizeComplete.innerHTML = "";
this.transferRate.innerHTML = "";
this.elapsedTime.innerHTML = "";
this.timeLeft.innerHTML = "";
this._form.action = this._action;
//this._form.target = $("ifame_upload");
this._form.submit();
this.processBar();
},
processBar : function(){
var url = "/humanreport/smartUploadXml";
var pars = "tmp=" + Math.random();
var processAjax = new Ajax.Request(
url,{method : 'post',parameters : pars,onComplete : this.loadComplete}
);
},
loadComplete : function(originalRequest){
try{
var root;
if(window.DOMParser){
var parser = new DOMParser();
root = parser.parseFromString(text, "text/xml");
}
if (window.ActiveXObject){
var doc = Try.these(
function() { return new ActiveXObject('MSXML2.DomDocument') },
function() { return new ActiveXObject('Microsoft.DomDocument')},
function() { return new ActiveXObject('MSXML.DomDocument') },
function() { return new ActiveXObject('MSXML3.DomDocument') },
function() { return new ActiveXObject('Microsoft.XMLDOM') }
) || null;
doc.async = false;
doc.loadXML(originalRequest.responseText);
if(doc.parseError.errorCode != 0)
root = null;
else{
root = doc;
}
}
if(root !== null){
var iTimerID;
if(root.selectSingleNode("errMessage") === null){
var readState = root.selectSingleNode("//ReadyState").text;
$('textarea').innerHTML = readState;
if(readState == "uninitialized"){
iTimerID = new PeriodicalExecuter(JSUpload.processBar,100);
}
else if(readState == "loading"){
$("bar").style.display = 'block';
$("PercentDone").style.width = root.selectSingleNode("//Percentage").text;
$("TotalSize").innerHTML = root.selectSingleNode("//TotalSize").text;
$("SizeCompleted").innerHTML = root.selectSingleNode("//SizeCompleted").text;
$("TransferRate").innerHTML = root.selectSingleNode("//TransferRate").text;
$("ElapsedTime").innerHTML = root.selectSingleNode("//ElapsedTime").text;
$("TimeLeft").innerHTML = root.selectSingleNode("//TimeLeft").text;
iTimerID = new PeriodicalExecuter(JSUpload.processBar,100);
}
else if(readState == "loaded"){
$("PercentDone").style.width = "100%";
iTimerID = null;
alert("upload complete, handling...");
}
else{
iTimerID = null;
alert("complete");
}
}
else{
alert(root.selectSingleNode("//ErrorMessage").text);
}
}
}
catch(e){
alert(e.description + "\n" + ":" + (e.number & 0xFFFF));
}
}
};
iTimerID = new PeriodicalExecuter(JSUpload.processBar,100);这段代码怎样才等调用JSUpload的processBar函数?