login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[Ajax] Loader.

Offline mike87 - 20/03/2007 21:03
Avatar van mike87Nieuw lid Ik heb met behulp van een handig AJAX object een functie geschreven om mensen in te loggen.
Nu werkt deze functie prima.

In deze functie wilde ik een loader plaatsen zodat er tijdelijk wat tekst verscheen terwijl de PHP pagina de gegevens verwerkt.
Het probleem is dus dan deze hele loader, niet verschijnt en er pas weer iets gebeurd nadat het PHP script klaar is. Ik heb een sleep() in de PHP code gezet zodat ik de loader zou moeten zien maar dit is niet het geval en ik zie niet wat de oorzaak ervan is.

Het is vanwege het object dat ik gebruik best wat code.
Maar zeer overzichtelijk.

Ik hoop dat iemand me hiermee uit de brand kan helpen.

http://www.plaatscode.be/4684/

4 antwoorden

Gesponsorde links
Offline bosgroen - 20/03/2007 21:10 (laatste wijziging 06/04/2007 19:39)
Avatar van bosgroen Gouden medaille

PHP interesse
ik heb niet heel jouw code onderzocht, maar ik denk dat het hem hierin zit:
---
  1. XMLHttp_request.prototype.readystate_not_ready = function()
  2. {
  3.  
  4. return ( this.xmlhandler.readyState && ( this.xmlhandler.readyState < 4 ) );
  5.  
  6. }
  7.  
  8. XMLHttp_request.prototype.readystate_ready_and_ok = function()
  9. {
  10.  
  11. return ( this.xmlhandler.readyState == 4 && this.xmlhandler.status == 200 ) ? true : false;
  12.  
  13. }

---

this.xmlhandler.readyState == 4 betekent; ajaxpagina is volledig ontvangen van de server.

Wat ik doe is bij het event een loading melding geven, en bij de ontvanging van het resultaat van de server de loading melding weer wegdoen.
Je zou ook een melding op basis van de readyState returnvalues kunnen doen, maar niet alle (oudere) browsers ondersteunen alle waarden.

Citaat:
Siliecom14's edit:
Denk aan de code tags, die zijn er niet voor niks 
Offline mike87 - 20/03/2007 21:34
Avatar van mike87 Nieuw lid Ik heb het op nog wat andere manieren geporbeerd, waaronder de manier die in een tutorial stond over het object dat ik gebruik, zelfs die werkte niet.
Dus ik liet even al het lastige weg, en dacht heel simpel na..

In me functie inloggen heb ik eerst een paar controle's of er 2 velden ingevuld zijn, wanneer deze beide ingevuld zijn start ik gewoon me doLoad() functie.
En dan wanneer het PHP script klaar is wordt doLoad() vanzelf weggehaald doordat ik de responsetext wegschrijf in dezelfde div.

  1. {
  2. doLoading('Melding');
  3.  
  4. var Handler = null;
  5.  
  6. var Post = new Array();
  7. Post ['Gebruiker'] = document.getElementById('Gebruikersnaam').value;
  8. Post ['Wachtwoord'] = document.getElementById('Wachtwoord').value;
  9.  
  10. Request = function()
  11. {
  12.  
  13. if ( Handler.xmlhandler.responseText )
  14. {
  15. var Response = Handler.xmlhandler.responseText;
  16.  
  17. switch ( Response )
Offline MysticEarth - 06/04/2007 18:57
Avatar van MysticEarth Nieuw lid Toevallig dat ik dit tegenkom. Onlangs heb ik zelf een ajax-loader geschreven en online geplaatst. Misschien dat je daar wat aan hebt?

Wat mijn loader doet, is de readyState van je xmlhttprequest checken. Wanneer deze 2 is (bestand geladen en ga nu naar state 3: interactive) komt de loader te voorschijn. Wanneer readyState 4 is (klaar) en de httpcode 200 (kan ook 404 zijn wanneer niet gevonden) dan wordt de loader weggehaald.

Check: http://mysticea...handler-10/
Offline Webtijn - 06/04/2007 21:13
Avatar van Webtijn PHP interesse Aan je code te zien gebruik je volgens mij het prototype van Rene gebruikt. Probeer eens die code opnieuw in een nieuw documentje te zetten, en een for loop maken van 0 tot 100000. Kijk eens of hij dán load. Ik vind het namelijk niet zo gek dat 'gewoon inloggen' geen loader geeft.

Én voor zover ik weet werkt het voorbeeld op PHPWorld gewoon ;)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.221s