Gli ultimi tutorial di sviluppo web
 

AJAX - Inviare una richiesta a un server


L'oggetto XMLHttpRequest è utilizzato per lo scambio di dati con un server.


Invia una richiesta a un server

Per inviare una richiesta a un server, si usa il open() e send() metodi dell'oggetto XMLHttpRequest:

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
metodo Descrizione
open(method, url, async) Specifica il tipo di richiesta

method : il tipo di richiesta: GET o POST
url : il server (file) posizione
async : true (asincrona) o false (sincrono)
send() Invia la richiesta al server (utilizzato per GET )
send(string) Invia la richiesta al server (usato per POST )

GET o POST ?

GET è più semplice e veloce di POST , e può essere utilizzato in molti casi.

Tuttavia, usare sempre POST richieste quando:

  • Un file memorizzato nella cache non è un'opzione (aggiornare un file o database sul server).
  • Invio di una grande quantità di dati al server ( POST non ha limiti di dimensione).
  • L'invio di input da parte dell'utente (che può contenere caratteri sconosciuti), POST è più robusto e sicuro di GET .

GET richieste

Una semplice GET richiesta:

Esempio

xhttp.open("GET", "demo_get.asp", true);
xhttp.send();
Prova tu stesso "

Nell'esempio di cui sopra, si può ottenere un risultato in cache. Per evitare questo, aggiungere un unico ID to the URL: ID to the URL:

Esempio

xhttp.open("GET", "demo_get.asp?t=" + Math.random(), true);
xhttp.send();
Prova tu stesso "

Se si desidera inviare le informazioni con il GET metodo, aggiungere le informazioni all'URL:

Esempio

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford", true);
xhttp.send();
Prova tu stesso "

POST richieste

Una semplice POST richiesta:

Esempio

xhttp.open("POST", "demo_post.asp", true);
xhttp.send();
Prova tu stesso "

Per POST dati come un modulo HTML, aggiungere un HTTP header con setRequestHeader() . Specificare i dati che si desidera inviare in send() metodo:

Esempio

xhttp.open("POST", "ajax_test.asp", true);
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Prova tu stesso "

metodo Descrizione
setRequestHeader(header, value) Aggiunge intestazioni HTTP per la richiesta

header : specifica il nome dell'intestazione
value : specifica il valore di intestazione

L'URL - Un file su un server

L' url parametro del open() il metodo, è un indirizzo di un file su un server:

xhttp.open("GET", "ajax_test.asp", true);

Il file può essere qualsiasi tipo di file, come txt e xml, o file di script del server come asp e php (che può eseguire azioni sul server prima di inviare la risposta indietro).


Asincrono - True o False ?

AJAX sta per Asynchronous JavaScript e XML, e per l'oggetto XMLHttpRequest a comportarsi come AJAX, la async parametro del open() il metodo deve essere impostata su true:

xhttp.open("GET", "ajax_test.asp", true);

L'invio di richieste asincrone è un enorme miglioramento per gli sviluppatori web. Molte delle attività eseguite sul server sono molto in termini di tempo. Prima di AJAX, questa operazione potrebbe causare l'applicazione per appendere o fermare.

Con AJAX, JavaScript non deve aspettare la risposta del server, ma invece ci riesce:

  • eseguire altri script in attesa di risposta del server
  • gestire la risposta quando la risposta pronta

Async=true

Quando si utilizza class = "notranslate" asincrona = true, specificare una funzione da eseguire quando la risposta è pronta in caso onreadystatechange:

Esempio

xhttp.onreadystatechange = function() {
  if (xhttp.readyState == 4 && xhttp.status == 200) {
    document.getElementById("demo").innerHTML = xhttp.responseText;
  }
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Prova tu stesso "

Potrete saperne di più su onreadystatechange in un capitolo successivo.


Async=false

Per utilizzare async=false , modificare il terzo parametro in open() metodo su false:

xhttp.open("GET", "ajax_info.txt", false);

Utilizzando async=false non è consigliato, ma per un paio di piccole richieste questo può essere ok.

Ricorda che il codice JavaScript non continuerà ad eseguire, fino a quando la risposta del server è pronto. Se il server è occupato o lento, l'applicazione si blocca o si ferma.

Nota: Quando si utilizza async=false , non scrivere una funzione onreadystatechange - basta inserire il codice dopo il send() dichiarazione:

Esempio

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;
Prova tu stesso "