Domanda

Sto facendo una richiesta a un programma CGI usando AJAX. La risposta mi invia la lunghezza del contenuto. Il mio scopo è mostrare dinamicamente l'avanzamento della risposta. Per questo ho bisogno di avviare una funzione sul valore onreadystate dell'oggetto XHR su 3. Ma la richiesta non sembra acquisire quel numero di stato. Invece passa direttamente dallo stato 1 allo stato 4. Cosa mi sto perdendo?

È stato utile?

Soluzione

La risposta potrebbe essere così rapida da non notarla allo stato 3. Soprattutto se la si esegue su localhost, la risposta potrebbe essere trasmessa molto rapidamente. Potresti provare a impostare un avviso quando arriva allo stadio 3 per verificare se effettivamente ci sta arrivando. Inoltre, credo che Internet Explorer affermi che è un errore accedere alla risposta nella fase 3, quindi potrebbero esserci problemi di compatibilità.

Altri suggerimenti

Se stai eseguendo localhost, probabilmente il browser non avrà mai la possibilità di funzionare tra il momento in cui invia la richiesta e il momento in cui ottiene la risposta ...

  1. il browser apre la connessione, imposta readyState su 1
  2. il browser invia il pacchetto al processo del server
  3. il processo del server riceve il pacchetto, ottiene la priorità dallo scheduler
  4. il server restituisce i dati al browser e fornisce il controllo della CPU. Il browser continua l'esecuzione.
  5. il browser vede tutti i dati ricevuti, imposta readyState su 4.

Per farla breve: non contare sul fatto di entrare in " ricevere " stato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top