Huidige functie herladen
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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);
}
{
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:
Code (php)
1
2
3
4
5
2
3
4
5
loadXML(function(data) {
parseData = jsonParse(data);
alert(parseData.Speed);
alert('lalalala');
});
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:
Code (php)
1
2
3
4
5
2
3
4
5
setTimeout("loadXML(function(data) {
parseData = jsonParse(data);
alert(parseData.Speed);
alert('lalalala');
});", 1000);
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
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
getSpeed();
function getSpeed() {
loadXML(function(data) {
parseData = jsonParse(data);
alert(parseData.Speed);
alert('A');
});
alert('B');
setTimeout("getSpeed()", 5000);
}
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
Nog enige idee?
Code (php)
1
2
3
4
5
2
3
4
5
loadXML(function(data) {
parseData = jsonParse(data);
alert(parseData.Speed);
alert('A');
});
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 ;)
Gewijzigd op 11/05/2011 12:37:43 door Leander ---