login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Timout Ajax (Opgelost)

Offline Pellens - 13/06/2009 11:15
Avatar van PellensPHP interesse Beste,

ik heb enkele Ajax toepassingen op mijn website. Wanneer men een naam intypt in een input, dient deze Ajax ter controle.

Nu deze functie kan de website nogal belasten, als men zich amuseert met veel te typen...
Hoe kan ik een timeout van bv een second telkens inlassen?

Ziehier de code:

  1. var http = createREQ();
  2. var rand = parseInt(Math.random()*999999);
  3. var waarde = waarde;
  4.  
  5. var url = "/ajax/page.php?rand="+rand+"&waarde="+waarde;
  6.  
  7. http.onreadystatechange = function(){
  8. var resultaat = http.responseText;
  9.  
  10. if(http.readyState == 4){
  11. if(resultaat == "OK") {
  12. status.innerHTML = "Beschikbaar";
  13. document.getElementById('submit').disabled = false;
  14. }
  15. if(resultaat == "NOK") {
  16. status.innerHTML = "Niet beschikbaar";
  17. document.getElementById('submit').disabled = true;
  18. }
  19. }
  20. else
  21. status.innerHTML = "Laden";
  22.  
  23. http.open("GET", url);
  24. http.send(null);
  25. }


Alvast bedankt!

6 antwoorden

Gesponsorde links
Offline Rik - 14/06/2009 17:02
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Hoe gebruik je dit nu? Ik zie dat die request steeds herhaalt wordt, maar ondertussen verandert de waarde van je variabele waarde nooit.

Het makkelijkste zal zijn om een onchange event op je input veld te zetten en dan jouw code te draaien.
Offline Pellens - 15/06/2009 13:51
Avatar van Pellens PHP interesse Nee dit werkt exact, het werkt op basis van onchange...
Ik wil gewoon een timeout van de query instellen voor overbelasting te vermeiden.

Grtz
Offline Rik - 15/06/2009 15:22
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Het lijkt erop dat nu bij de onchange continue wordt verversd. Je zou daar best een timeout op kunnen zetten, maar je kunt toch net zo goed gewoon één keer de request maken?

Dan hoef je alleen maar de http.open en send buiten de onreadystate change functie te halen.
Offline Pellens - 15/06/2009 18:44 (laatste wijziging 15/06/2009 18:44)
Avatar van Pellens PHP interesse @Boukefalos Ja idd, dat is de point.
Maar weet niet precies waar de time out te plaatsen...

Bedankt
Offline timmie_loots - 15/06/2009 20:33
Avatar van timmie_loots PHP gevorderde Ik neem aan dat dit alles in een functie staat, dan kun je zoiets doen:

  1. var limiter = false;
  2.  
  3. function checkName()
  4. {
  5. if (limiter)
  6. return;
  7.  
  8. limiter = true;
  9.  
  10. // Hier je check via AJAX
  11.  
  12. setTimeout("limiter = false;", 1000);
  13. }


Op die manier doet hij het maar om de seconde. Let wel op dat je 'limiter = true' ook daadwerkelijk vóór je ajax request plaatst, anders gooit je browser er bij een snel typend persoon alsnog meerdere requests tegenaan.
Offline Pellens - 16/06/2009 11:30
Avatar van Pellens PHP interesse Bedankt!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.183s