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;
}
toch opgelost door het volgens de originele bedoeling van ajax moet
Anders kijk je gewoon in je Javascript console.
joop schreef op 11.03.2006 16:11
toch opgelost door het volgens de originele bedoeling van ajax te doen
Sebastiaan schreef op 11.03.2006 17:07
Anders kijk je gewoon in je Javascript console.
Dus hiermee bedoel ik als het ooit niet lukt dan kijk je in Firefox Javascript console.
dat had ik ook al door dat dat handig is, alleen soms zijn er geen fouten maar doet hij het toch niet zoals je wil

Reageren