|
Categorieën >
JavaScript
functie gaat door zonder te wachten op return van functie
daanlaan – 23/06/2011 15:10 (Laatst gewijzigd op 23/06/2011 15:19)
|
|
offline
|
MySQL interesse
|
Ik heb 2 functions in js.
eentje is om via ajax een url te openen
en de andere roept deze functie op en 'zou moeten' wachten op een return.
function ajaxSend(params)
{
var http = createRequestObject();
http.open('get', 'ajax.php?'+params);
http.onreadystatechange =
function handle_rate_input()
{
if(http.readyState == 4 && http.status == 200)
{
if(http.responseText)
{
return http.responseText;
}
else
{
return 0;
}
}
}
http.send(null);
}
function sendTradeRequest()
{
var player2 = $('#tradeRequestName').val();
var ajaxResponse = ajaxSend('tradeRequest='+player2);
if(ajaxResponse==1){
$('#tradeBox').fadeIn();
}else{
alert('Foutmelding, neem contact op met een admin.');
}
}
function ajaxSend(params) { var http = createRequestObject(); http.open('get', 'ajax.php?'+params); http.onreadystatechange = function handle_rate_input() { if(http.readyState == 4 && http.status == 200) { if(http.responseText) { return http.responseText; } else { return 0; } } } http.send(null); } function sendTradeRequest() { var player2 = $('#tradeRequestName').val(); var ajaxResponse = ajaxSend('tradeRequest='+player2); if(ajaxResponse==1){ $('#tradeBox').fadeIn(); }else{ alert('Foutmelding, neem contact op met een admin.'); } }
Wat gebeurt er nu, ik declareer de variabele ajaxResponse en controleer daarna of deze 1 is. Deze waarde krijgt hij terug van de functie ajaxSend.
Maar de functie wacht blijkbaar niet tot hij een waarde heeft terug gekregen en begint meteen te controleren... if(ajaxResponse==1){ |
3 antwoorden
avdg – 23/06/2011 15:47
|
|
offline
|
PHP gevorderde
|
Dit komt omdat js de code van boven naar beneden leest, in js zijn er geen functies om de compiler te laten stoppen. Om dit probleem op te vangen, aanvaarden de functies een functie die uitgevoerd wordt na bv. het laden van een pagina. (Js doet wel de taken, maar doet deze op de achtergrond terwijl het script verder wordt verwerkt, dus in een asynchrone manier)
|
daanlaan – 23/06/2011 17:37 (Laatst gewijzigd op 23/06/2011 17:38)
|
|
offline
|
MySQL interesse
|
avdg schreef: Dit komt omdat js de code van boven naar beneden leest, in js zijn er geen functies om de compiler te laten stoppen. Om dit probleem op te vangen, aanvaarden de functies een functie die uitgevoerd wordt na bv. het laden van een pagina. (Js doet wel de taken, maar doet deze op de achtergrond terwijl het script verder wordt verwerkt, dus in een asynchrone manier)
dus ik zal de code van die eerste functie telkens opnieuw moeten typen om een ajax functie gebruiken?
|
|
|
|
offline
|
PHP gevorderde
|
aan je tweede functie te zien gebruik je jQuery als framework. waarom gebruik je de ajax-functie van jQuery niet voor de afhandeling van asynchrone requests?
|
Je moet ingelogd zijn om een reactie te kunnen posten.
|
|
|