Hallo,


Ik ben bezig met een AJAX scriptje waarbij ik een callback gebruik om de data te gebruiken buiten de functie. Het ziet er als volgt uit:


			function loadXML(onsuccess)
			{
			var xmlhttp;
			
				if (window.XMLHttpRequest)
				{ // code for IE7+, Firefox, Chrome, Opera, Safari
				  xmlhttp = new XMLHttpRequest();
				} 
				else
				{ // code for IE6, IE5
				  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				}
				  
				
			    xmlhttp.onreadystatechange = function()
			    {
			        if (xmlhttp.readyState == 4  && xmlhttp.status == 200) {
			       		onsuccess(xmlhttp.responseText);
					}
					
					if(xmlhttp.readyState == 4  && xmlhttp.status == 0)
					{
	  					onsuccess(xmlhttp.responseText);
	  				}
			    }
					
				xmlhttp.open("GET", "http://example.com/app/data.php", true);
				xmlhttp.send(null);
					
			}


en roep ik het aan met dit:


loadXML(function(data) {
				parseData = jsonParse(data);
				alert(parseData.Speed);
				alert('lalalala');
			});


Zo los staand doet ie het één keer, maar ik wil graag dat de data die ingeladen wordt up to date blijft, dus moet die functie 'loadXML' zich aan het eind herladen. Weet iemand hoe dat kan? Met een simpele setTimeout("this", 4000); functie, werkt dat niet.

Het werkt ook niet om de gehele functie in een setTimeout te zetten, zoals hierna:


setTimeout("loadXML(function(data) {
				parseData = jsonParse(data);
				alert(parseData.Speed);
				alert('lalalala');
			});", 1000);


Alvast bedankt!
maak een extra functie aan die het ajax aan roept en doe de timeout op die functie
Werkt ook niet. Ik heb het als volgt gedaan, maar hij voert enkel om de 5 secoden de alert met B uit.


		getSpeed();
		function getSpeed() {
			loadXML(function(data) {
				parseData = jsonParse(data);
				alert(parseData.Speed);
				alert('A');
			});
			alert('B');
			setTimeout("getSpeed()", 5000);
		}


Die hele loadXML functie voert hij niet eens uit.
haal die timeout eens uit de functie
Werkt ook niet. Dan voert hij hem namelijk maar 1 keer uit, en dan enkel de alert met B. Niet de alert met A (en al helemaal niet die parseData.Speed).

Nog enige idee?

function getSpeed()
{
	alert("hello");
}

var a = setInterval(
function()
{
	getSpeed();
}, 5000);
Helaas werkt dat niet. Hij herlaad wel keurig, maar voert mijn functie loadXML niet uit..


loadXML(function(data) {
	parseData = jsonParse(data);
	alert(parseData.Speed);
	alert('A');
});


EDIT: Laat maar, het werkte allemaal eigenlijk wel. Alleen een / in mij url schopte alles in de war (ivm AJAX waarschijnlijk). Ik weet nu wel genoeg, alsnog bedankt ;)

Reageren