Dettagli XMLHttpRequest e Fare richieste asincrone in Ajax

Indipendentemente da come il tipo XMLHttpRequest viene creata un'istanza, e indipendentemente dal browser o dalla piattaforma, XMLHttpRequest è lo stesso insieme di metodi e proprietà. Tabella 4-1 definisce le proprietà ei metodi. Io non forniscono alcuna dettagli dei metodi, che sono utilizzati in tutta l'articolo. Comunque, io voglio dare particolare attenzione alle proprietà, perché sono ampiamente utilizzati. Quando una richiesta ha recuperato i dati, quattro proprietà sono usati per indicare come la richiesta di andata. Si consideri il seguente codice HTML, che fa riferimento al quattro proprietà e viene chiamato dopo che il metodo Send ha completato:

document.getElementById ( 'httpcode'). innerHTML = xmlhttp.status; document.getElementById ( 'httpStatus'). innerHTML = xmlhttp.statusText; document.getElementById ( 'risultato'). innerHTML = xmlhttp.responseText; document.getElementById ( ' xmlresult '). innerHTML = xmlhttp.responseXML;
  

Le quattro proprietà può essere suddivisa in due sottocategorie: il risultato e stato HTTP. Lo stato e le proprietà statusText recuperare i codici di risultato HTTP. La proprietà di stato contiene un valore intero, come ad esempio 200 per il successo. La proprietà statusText contiene una rappresentazione testuale del codice risultato HTTP, come ad esempio OK. Il responseText e le proprietà responseXML contenere il risultato della richiesta HTTP. La differenza tra le due proprietà è che responseText contiene una stringa di buffer dei risultati e riferimenti responseXML una rappresentazione XML DOM dei risultati.

Fare richieste asincroneE 'possibile utilizzare l'oggetto XMLHttpRequest in maniera sincrona, il che significa che il momento inviare è chiamato, il browser smette di trasformazione di altri messaggi e aspetta una risposta. Ma è una cattiva idea quella di utilizzare l'oggetto XMLHttpRequest in maniera sincrona, come non si blocca il browser.

Per il momento, ignorando il codice LoadAtomFeed e concentrandosi su XMLHttpRequest, diamo un'occhiata a come i browser possono essere bloccati. L'esempio che segue è una pagina ASP.NET che si blocca per dieci secondi, e sarà il riferimento per l'oggetto XMLHttpRequest:

<% @ Page Language = "C #"%>  Hanging pagina  <% System.Threading.Thread.Sleep (10000);%> Ciao, dopo un sonno di dieci secondi! 

Il campione ASP.NET è scritto utilizzando il linguaggio di programmazione C #, e vi è una singola istruzione, System.Threading.Thread.Sleep. La dichiarazione unica causa il thread corrente a dormire per dieci secondi. La soluzione è l'utilizzo di un asincrono Ajax XMLHttpRequest. Una richiesta asincrona non bloccherà il browser, e l'utente potrebbe continuare cliccando o usando altre schede del browser. Il seguente codice sorgente è l'applicazione Ajax correttamente scritta di utilizzare una richiesta asincrona:

 Sample Page    

Documento Nessun risultato Nessun risultato

Ci sono diverse nuove aggiunte alla domanda Ajax riscritto, e affrontare le questioni tecniche di caricamento dei contenuti in modo asincrono. Cominciamo puntando sulla funzione GetIt. L'attuazione di GetIt è simile ai precedenti esempi di applicazioni Ajax, salvo che il terzo parametro del metodo aperto è vero per indicare che la richiesta sarà asincrona. Questo significa che quando il metodo Send si chiama , restituirà immediatamente. XMLHttpRequest Quando opera in modalità asincrona, il feedback è dato al chiamante sullo stato della richiesta. La proprietà onreadystatechange è una funzione che riceve il feedback. E 'importante notare che la funzione di feedback deve essere assegnato prima di ogni invio, perché dopo il completamento richiesta la proprietà onreadystatechange viene reimpostata. Questo è evidente nel Mozilla Firefox e la fonte.

La proprietà onreadstatechange è assegnata la funzione AsyncUpdateEvent. Per l'attuazione di AsyncUpdateEvent è un'istruzione switch che le prove dello stato attuale della domanda. Quando una richiesta asincrona è fatto, lo script è libero di continuare l'esecuzione di codice. Questo potrebbe causare problemi se lo script tenta di leggere i risultati prima della richiesta richiesta è stata completata. Utilizzando la proprietà readyState, è possibile conoscere la fase della richiesta HTTP. La proprietà readyState può contenere uno dei cinque valori, in cui ogni valore rappresenta uno stato di richiesta:

• 0: L'istanza XMLHttpRequest è in uno stato incoerente, e i dati risultato non dovrebbe essere riferimento.

• 1: La richiesta è in corso, e il risultato dei dati non devono essere recuperate.

• 2: La richiesta ha scaricato i dati di risultato e si prepara per riferimento.

• 3: Lo script in grado di interagire con l'istanza XMLHttpRequest, anche se i dati non è completamente caricato.

• 4: La richiesta di dati e di risultato sono completi e sono stati finiti.

La richiesta degli Stati sembrerebbe indicare che è possibile manipolare le varie proprietà in diversi stati. Il problema è che non tutti i browser supportano la proprietà dello stesso presso gli stessi codici di stato. Il cross-platform unica soluzione è fare riferimento alla proprietà risultato XMLHttpRequest (status, statusText, responseText, e responseXML) quando la richiesta è stato pari a 4. Quando la richiesta è stato di 4, si può essere certi che le proprietà risultato contiene un valore valido.

Eseguire l'applicazione Ajax asincrona risultati in una chiamata in corso, e il browser non è bloccato. È possibile fare clic sul pulsante, aprire un nuovo browser, e navigare a un altro sito web.

un articolo presentato da Sonja Lande


Disclaimer:Il nostro sito non è responsabile per il contenuto di questo articolo. Webarticles è una risorsa gratuita di informazioni.
Importante: Questo articolo "XMLHttpRequest Dettagli e Making richieste asincrone in Ajax" è stato tradotto da un software automatico. Ci dispiace per eventuali errori di ortografia che possono essersi verificati. Grazie per la vostra comprensione.


Online: 336 users browsing the articles directory