PDA

View Full Version : How do I hide AJAX progress indicator using vB_AJAX_Handler


RealAdvice
01-16-2009, 04:30 PM
I currently have asynchronous AJAX writing to the db but can't figure out why I can't get a proper response to set the innerHTML of a uniquely named div to blank. I'm using to create the AJAX object. When I do this, it creates a progress indicator but I can't clear it out once the POST is complete. Any suggestions??

function sample(){
var queryString = "?variableshere=11111;
var statusdiv = "uniqueidhere"

AJAX = new vB_AJAX_Handler(true);

AJAX.onreadystatechange(samplecomplete(a,b,c));
AJAX.send('test.php' + queryString);
}

function samplecomplete(a,b,c)
{
fetch_object(statusdiv).innerHTML = "<img src=\"/images/misc/13x13progress.gif\">";

if (AJAX.readyState == 4 && AJAX.status == 200)
{
if (AJAX.responseXML)
{
document.getElementById(rid).className = gaugeclass;
fetch_object(statusdiv).innerHTML = "";
}

if (is_ie)
{
AJAX.abort();
}
}
else
{
if(document.getElementById(rid))
{
document.getElementById(rid).className = gaugeclass;
}
}
}

Dismounted
01-17-2009, 12:24 PM
Firstly, vBulletin now uses the YUI library, so you should execute AJAX commands like so:
YAHOO.util.Connect.asyncRequest('POST', scriptpath + '?do=ajax', {
success: this.handle_ajax_response,
failure: this.handle_ajax_error,
timeout: vB_Default_Timeout,
scope: this
}, SESSIONURL + 'securitytoken=' + SECURITYTOKEN + '&foo=' + foo);
Now your problem. The variable "statusdiv" is not in scope (i.e. does not exist), when you want it to be. Just place this variable into your second function.