login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Ajax, status van pagina checken

Offline Ultimatum - 29/01/2008 15:52
Avatar van UltimatumPHP expert Ey, ik ben nu al een paar dagen met ajax aan het oefenen en het lukt met aardig. Maar nu viel me vandaag wat vreemds op. Om te kijken of de pagina klaar is gebruikte ik deze regel:

  1. if(xmlhttp.readyState == 4 || xmlhttp.readyState == 'complete') {


Elke keer als ik dan een js functie triggerde kreeg ik een loadingbar te zien (maar 1 seconden). Net zag ik echter dit staan in de tutorial van nemesiskoen (Tutorial)
Hier stond deze regel:
  1. if(http.readyState == 4 && http.status == 200){


Nu had ik dus mijn readyState == 'complete' vervangen door status == 200 en zie nu helemaal geen loading bar meer  .

Wat is nou precies het verschil tussen die 2 dan, want het resultaat is beduidend beter aangezien de content nu direct geladen word ipv een hele korte loadingbar.

6 antwoorden

Gesponsorde links
Offline marten - 29/01/2008 16:30
Avatar van marten Beheerder alert eens je http.status dan zie je welke je moet gebruiken. Denk zelf 200. Dit is gewoon je pagina header status (pagina niet gevonden enzo is 404 enz enz
Offline Wim - 29/01/2008 16:55
Avatar van Wim Crew algemeen mss staat er nog een statusstring achter, dan is het zoiets:

200 OK

(200 is idd de statuscode)
Offline Ultimatum - 29/01/2008 16:55
Avatar van Ultimatum PHP expert Ik heb wel de goeie, dat is het punt niet. Volgens mij doet readyState namelijk hetzelfde, maar waarom is die zo beduidend trager. Misschien is readyState ook wel beter om te gebruiken dat weet ik niet, hoopte dat misschien iemand die hier mee bekend is antwoord op heeft .
Offline BramBo - 29/01/2008 17:43
Avatar van BramBo JS gevorderde Je Readystate wordt als eerste geparsed, een server respons, dit is niet meer dan een request uitsturen en een aanvraag conformatie ontvangen. (readyState is in W3C gedefinieerd als een unsigned Short een integer dus. Terwijl in IE staat hij gedefinieerd als een String)

Hierna ga je kijken naar wat HTTP er van zegt (.status dus). Dit is protocol afhankelijk dus IE nog FF hebben hier iets over te zeggen. 200 wil alleen maar zeggen dat de request is ontvangen en compleet verwerkt.

Wat je nu hebt werkt maar is niet geheel volledig. == 'complete' is een goede uitbreiding als je het completer/robuuster wilt hebben.
Offline Stijn - 29/01/2008 17:50
Avatar van Stijn PHP expert readyState heeft 4 statussen, hiermee weet je in hoeverre je ajax request afgehandelt is.

de status geef meer informatie over GET header.

Dus je ajax status kan klaar zijn (state = 4) maar de pagina bestaat niet (status = 404).

Je moet wel je variable aanpassen hé van http naar xmlhttp.
Offline Ultimatum - 29/01/2008 17:53
Avatar van Ultimatum PHP expert @brambo, dus ik zou ze eigelijk allebei moeten doen? readyState en status. Want het laden gaat dus aanzienlijk tragen met readyState.

@stijn1989, dat weet ik wel, ik wilde alleen weten waarom readyState langzamer is dan status.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.172s