Descrizione Di XMLHttpRequest

Originalmente, Microsoft ha progettato XMLHttpRequest per permettere che il Internet Explorer (IE) carichi i documenti di XML dal Javascript. Anche se ha XML nel relativo nome, XMLHttpRequest realmente è un cliente generico del HTTP per il Javascript. Con esso, il Javascript può fare PER OTTENERE ed INVIARE le richieste del HTTP. (per le richieste dell'ALBERINO, i dati possono essere trasmessi all'assistente in una disposizione della vostra scelta.) Le limitazioni principali a XMLHttpRequest sono dovuto il sandbox di sicurezza del browser. Può fare soltanto le richieste di HTTP(S) (lima URLs, per esempio, non lavoro) e può fare le richieste soltanto allo stesso dominio della pagina attualmente caricata.

  

Le limitazioni di sicurezza di XMLHttpRequest limitano i sensi in cui potete usarli, ma l'alternanza nella sicurezza aggiunta è buona degno esso. La maggior parte dei attacchi contro le applicazioni di Javascript vertono sul codice cattivo d'iniezione nel Web page. Se XMLHttpRequest permettesse le richieste a qualunque Web site, stare bene ad un giocatore importante in questi attacchi. Il sandbox di sicurezza riduce questi problemi potenziali. In più, facilita il modello di programmazione perché il codice di Javascript può fidarsi implicitamente di tutti i dati che carica da XMLHttpRequest. Può fidarsi dei dati perché i nuovi dati sono sicuro altrettanto quanto la pagina che ha caricato la pagina iniziale.

Malgrado il fatto che XMLHttpRequest fornisca soltanto un piccolo api ed appena una manciata di metodi e di proprietà, ha relative differenze fra i browsers. Queste differenze sono pricipalmente nell'evento che maneggia ed obiettano il instantiation (in IE, XMLHttpRequest è realmente un oggetto di Activex), in modo da non sono dure da funzionare intorno. Nella seguente descrizione del XMLHttpRequest api, la sintassi di Mozilla per il instantiation di XMLHttpRequest è usata. Se desiderate fare funzionare gli esempi in IE, dovete sostituire nuovo XMLHttpRequest(); con il uno o il altro nuovo ActiveXObject("MSXML2.XMLHTTP.3.0"); o il metodo completo di instantiation del traversa-cross-browser indicato "nella sezione di XMLHttpRequest del Traversa-cross-Browser" di questo articolo.

XMLHttpRequest è il metodo più-usato per le comunicazioni di AJAX perché fornisce due caratteristiche uniche. La prima caratteristica fornisce la capacità di caricare il nuovo soddisfare senza quel soddisfare che è cambiato in tutto il senso, che lo rende estremamente facile inserire AJAX nei vostri modelli normali di sviluppo. La seconda caratteristica permette che il Javascript faccia le chiamate sincrone. Una chiamata sincrona arresta tutti i altri funzionamenti fino a che non sia completa e mentre questa non è un'opzione che sia usata solitamente, può essere utile nei casi in cui la richiesta corrente deve essere completata prima che ulteriori azioni siano intraprese.

XMLHttpRequest::Open()

Il metodo aperto è usato per regolare il tipo di richiesta (OTTENGA, INVII, MESSO, o PROPFIND), il URL della pagina che è chiesta e se la chiamata sarà asincrona. Un username e una parola d'accesso per l'autenticazione del HTTP possono anche facoltativamente essere passati. Il URL può essere un percorso relativo (quale page.html) o completo che include l'indirizzo dell'assistente (quale http://blog.joshuaeichorn.com/page.html). La firma di base di metodo è:

open(type, URL, isAsync, username, password)

Nell'ambiente di Javascript, le limitazioni di sicurezza sono sul posto. Queste limitazioni di sicurezza inducono il metodo aperto a gettare un'eccezione se il URL proviene da un dominio differente che la pagina corrente. I seguenti usi di esempio aperti installare un sincrono OTTENGONO la richiesta a index.html:

1 req di varietà = nuovo XMLHttpRequest();
2 req.open('GET ', 'index.html ', falsi);
3 req.send(null);
un == 200) di 4 if(req.status
5 alert(req.responseText);

XMLHttpRequest::Send()

Il metodo di trasmissione fa il collegamento al URL specificato in aperto. Se la richiesta è asincrona, la chiamata la restituirà immediatamente; altrimenti, la chiamata ostruirà ulteriore esecuzione fino a trasferire la pagina dal sistema centrale verso i satelliti. Se il tipo di richiesta è ALBERINO, il carico utile sarà trasmesso come il corpo della richiesta che è trasmessa all'assistente. La firma di metodo è:

send(payload)

Quando fate una richiesta dell'ALBERINO, dovrete regolare il Soddisfare-tipo intestazione. Questo senso, l'assistente conosce che cosa fare con il soddisfare uploaded. Al mimo che trasmette una forma per mezzo dell'ALBERINO del HTTP, avete regolato il tipo soddisfatto a application/x-www-form-urlencoded. I dati di URLencoded sono la stessa disposizione che vedete in un URL dopo "?". Potete vedere un esempio di questi dati messi facendo una forma e regolando il relativo metodo PER OTTENERE. Il seguente esempio mostra una richiesta sincrona dell'ALBERINO a index.php che sta trasmettendo un carico utile di URLencoded. Se index.php contiene <?php var_dump($_POST); ? >, potete vedere i dati presentati tradotti come se sia una forma normale nell'allarme:

1 req di varietà = nuovo XMLHttpRequest();
2 req.open('POST ', 'index.php ', falsi);
3 req.setRequestHeader('Content-type ',
4         'application/x-www-form-urlencoded;charset=UTF-8;');
5 req.send('hello=world&XMLHttpRequest=test ');
un == 200) di 6 if(req.status
7   alert(req.responseText);

XMLHttpRequest::setRequestHeader()

Ci sono molti casi differenti in cui regolare un'intestazione su una richiesta potrebbe essere utile. L'uso più comune di setRequestHeader() deve regolare il Soddisfare-tipo, perché la maggior parte delle applicazioni di fotoricettore già sanno occuparsi di determinati tipi, quale URLencoded. La firma di metodo del setRequestHeader prende due parametri: l'intestazione da regolarsi ed il relativo valore:

setRequestHeader(header, value)

Poiché le richieste trasmesse usando XMLHttpRequest trasmettono le stesse intestazioni standard, compreso le intestazioni del biscotto ed intestazioni di autenticazione del HTTP, come richiesta normale del browser, il nome dell'intestazione sarà solitamente il nome dell'intestazione del HTTP che desiderate escludere. Oltre che le intestazioni d'esclusione di difetto, il setRequestHeader è utile per la regolazione dell'abitudine, intestazioni di application-specifico. Le intestazioni su ordinazione sono premesse generalmente con la x per distinguerle dal campione un. Il seguente esempio fa un sincrono OTTENERE la richiesta che aggiunge un'intestazione denominata X-foo a test.php. Se test.php contiene <?php var_dump($_SERVER); ? >, vedrete l'intestazione presentata nell'allarme:

1 req di varietà = nuovo XMLHttpRequest();
2 req.open('GET ', 'test.php ', falsi);
3 req.setRequestHeader('X-foo', 'bar ');
4 req.send(null);
5
un == 200) di 6 if(req.status
7 alert(req.responseText);

XMLHttpRequest::getResponseHeader() e getAllResponseHeaders()

Il metodo del geTResponseHeader permette che otteniate una singola intestazione dalla risposta; ciò è particolarmente utile quando tutta che abbiate bisogno di è un'intestazione come Soddisfare-tipo; si noti che l'intestazione specificata è contenitore-insensibile. La firma di metodo è come segue:

getResponseHeader(header)

i getAllResponseHeaders restituisce tutte le intestazioni dalla risposta in una singola stringa; ciò è utile per mettere a punto o la ricerca del valore. Il seguente esempio fa un sincrono OTTENERE la richiesta a test.html. Quando il cliente riceve una risposta, il Soddisfare-tipo è avvisato e tutte le intestazioni sono avvisate:

1 req di varietà = nuovo XMLHttpRequest();
2 req.open('GET ', 'test.html ', falsi);
3 req.send(null);
4
un == 200) di 5 if(req.status {
6    alert(req.getResponseHeader('Content-type '));
7    alert(req.getAllResponseHeaders()); 8}

Altri Metodi Di XMLHttpRequest

Tutti i browsers effettuano un metodo del abort(), che è usato per annullare una richiesta asincrona in-progress. (un esempio di questo è indicato "trasmettendo nella sezione di richieste asincrone" in questo articolo.) i browsers Mozilla-basati inoltre offrono alcuni metodi supplementari in cima all'api di base; per esempio, il addEventListener() ed il removeEventListener() forniscono un senso interferire gli eventi di condizione senza usando sopra * le proprietà. Ci è inoltre un metodo del overrideMimeType() che marche esso possibile forzare il Soddisfare-tipo a text/xml in modo che sia analizzato in un documento di DOM anche se l'assistente non lo segnala come tali. I metodi di Mozilla-specifico possono essere utili in determinate circostanze, ma nella maggior parte dei casi, dovreste rimanere via da loro perché non tutti i browsers le sostengono.

Proprietà Di XMLHttpRequest

XMLHttpRequest fornisce un certo numero di proprietà che forniscono le informazioni o i risultati circa la richiesta. La maggior parte delle proprietà sono evidenti; leggete semplicemente il valore e vi comportate su esso. Sopra * le proprietà sono alimentatori di evento che sono usati assegnando una funzione loro. Una lista di tutte le proprietà segue:

Nota

Mozilla ripristina gli alimentatori di evento, quale onreadystatechange, dopo che una richiesta sia completata, in modo da dovete ripristinarli se state facendo le chiamate multiple con lo stesso oggetto.

riferimento del readyState

La seguente tabella mostra i valori possibili per la variabile del readyState. Restituirà un numero che rappresenta la corrente dichiara dell'oggetto. Ogni richiesta progredirà attraverso la lista dei readyStates

Livelli Di ReadyState
codice di condizione del readyState Condizione dell'oggetto di XMLHttpRequest
(0) UNINITIALIZED L'oggetto è stato generato ma non è stato inizializzato. (il metodo aperto non è stato denominato.)
(1) CARICARE L'oggetto è stato generato, ma il metodo di trasmissione non è stato denominato.
(2) CARICATO Il metodo di trasmissione è stato denominato, ma la condizione e le intestazioni non sono ancora disponibili.
(3) INTERATTIVO Alcuni dati sono stati ricevuti. Denominando le proprietà del responseText e responseBody a questa dichiari per ottenere i risultati parziali restituirà un errore, perché le intestazioni di risposta e di condizione non sono completamente disponibili.
(4) COMPLETATO Tutti i dati sono stati ricevuti ed i dati completi sono disponibili nelle proprietà del responseText e responseBody.


Il readyState variabile e l'alimentatore di evento del onreadystatechange sono collegati im modo tale che ogni volta la variabile del readyState è cambiata, l'alimentatore di evento del onreadystatechange è denominato.

ciò è un articolo aggiunto dal carol Rudenberg


Diniego: Il nostro Web site non è responsabile delle informazioni contenute da questo articolo. Questo articolo in nessun modo riflette le viste, le opinioni, i pensieri o la credenza del personale dell'indice degli articoli.

Avviso di traduzione: L'articolo "descrizione di XMLHttpRequest" è stato tradotto usando un servizio di traduzione automatizzato. Chiediamo scusa francamente per tutti gli errori di traduzione che hanno accaduto. Grazie per capire.

Online: 555 users browsing the articles directory