ben bezig iets met ajax te maken maar het werkt nog iet helemaal zoals ik wil. dit is de code
var info;
function sendRequest(value, soort){
http.open('GET', 'getinfo.php?' + soort + '=' + value);
http.onreadystatechange = handleResponseText;
http.send(null);
}
function handleResponseText(){
if(http.readyState == 4 && http.status == 200){
if(http.responseText){
info = http.responseText;
}
}
}
function send(waarde, soort){
sendRequest(waarde, soort);
return info;
}
het probleem is dat de var info al gereturnd wordt terwijl die nog geen waarde heeft gekregen. Roep ik daarna nog een keer de functie send() aan dan doet die het wel. Iemand die een oplossing weet?
ok ik heb nu een while alleen het probleem is dat de het script perfect werkt als ik een alert in de while zet alleen als ik niks of iets anders in de while loop zet blijft hij oneindig doorgaan.
Je hebt in die while lus een soort c/java wait() of sleep() nodig. maar Javascript kent niet zo'n soort functie. Dit krijg ik via google als oplossing daarvoor:
If you wanted (pseudo code)
while (someCondition) {
statement1;
wait (someDelay)
}
you code
var tid;
function statement1 () {
// your code here
if (!condition)
clearInterval(tid);
}
tid = setInterval('statement1()', someDelay);
edit: bron, er staan nog wat betere oplossingen, al denk ik neit dat je daar je oplossing moet zoeken. Je probeert nu een synchrone denkwijze (code van boven naar onder uitvoeren) toe te passen op een asynchroon proces. XMLHTTPRequest is namelijk eigenlijk zo bedacht dat je het na object.send(null) z'n gang kan laten gaan, en dat waneer het klaar is het wel een event (namelijk onreadystatechange) aanroept. Dus je hoeft niet te wachten op het laden van de pagina. Jij probeert nu een functie te maken die dat wel doet, en dan moet je dus de computer bezig houden tijdens het opvragen van de pagina, terwijl je best wat anders nuttigs met die tijd had kunnen doen.
lukt me nog niet helemaal om het goed toe te passen.
Dit is mijn code tot nu toe
var info;
var status = false;
function createRequestObject(){
var req;
if(window.XMLHttpRequest){
req = new XMLHttpRequest();
}
else if(window.ActiveXObject){
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
alert('Probleem met serververbinding');
}
return req;
}
function sendRequest(value, soort){
status = false;
http = createRequestObject();
http.open('GET', 'getinfo.php?' + soort + '=' + value, true);
http.onreadystatechange = handleResponseText;
http.send(null);
}
function handleResponseText(){
if(http.readyState == 4 && http.status == 200){
if(http.responseText){
info = http.responseText;
status = true;
}
}
}
function send(waarde, soort){
sendRequest(waarde, soort);
while(!status){
alert(status);// hier gaat het om
}
return info;
}