Quando si usa Ajax (JavaScript asincrono e XML) per accedere al server senza ricaricare la pagina Web, sono disponibili due opzioni su come passare le informazioni per la richiesta al server: GET o POST.
Queste sono le stesse due opzioni che hai quando passi le richieste al server per caricare una nuova pagina, ma con due differenze. Il primo è che stai richiedendo solo una piccola informazione invece di un'intera pagina web. La seconda differenza più evidente è che poiché la richiesta Ajax non viene visualizzata nella barra degli indirizzi, i visitatori non noteranno alcuna differenza quando viene effettuata la richiesta.
Le chiamate effettuate tramite GET non esporranno i campi e i loro valori ovunque, anche se l'utilizzo di POST non espone quando la chiamata viene effettuata da Ajax.
Cosa non dovresti fare
Quindi, come dovremmo scegliere quale di queste due alternative dovrebbe essere usata?
Un errore che alcuni principianti potrebbero fare è usare GET per la maggior parte delle loro chiamate semplicemente perché è il più semplice dei due da programmare. La differenza più evidente tra le chiamate GET e POST in Ajax è che le chiamate GET hanno ancora lo stesso limite sulla quantità di dati che possono essere trasmessi quando si richiede un nuovo caricamento della pagina.
L'unica differenza è che poiché stai elaborando solo una piccola quantità di dati con una richiesta Ajax (o almeno così è dovrebbe usarlo), è molto meno probabile che tu abbia questo limite di lunghezza all'interno di Ajax come faresti con il caricamento di un web completo pagina. Un principiante può prenotare utilizzando le richieste POST per i pochi casi in cui è necessario passare più informazioni consentite dal metodo GET.
La soluzione migliore quando hai molti dati da passare in questo modo è quella di effettuare più chiamate Ajax passando alcune informazioni alla volta. Se hai intenzione di trasmettere enormi quantità di dati in una sola chiamata Ajax, probabilmente staresti meglio semplicemente ricaricando l'intera pagina poiché non ci sarà alcuna differenza significativa nel tempo di elaborazione in presenza di enormi quantità di dati coinvolti.
Quindi, se la quantità di dati da trasmettere non è una buona ragione per scegliere tra GET e POST, cosa dovremmo usare per decidere?
Questi due metodi sono stati infatti impostati per scopi completamente diversi e le differenze tra il modo in cui funzionano sono in parte dovute alla differenza in ciò per cui sono destinati a essere utilizzati. Questo non vale solo per l'utilizzo di GET e POST di Ajax, ma in realtà ovunque questi metodi potrebbero essere impiegati.
Lo scopo di GET e POST
GET è usato come suggerisce il nome: a ottenere informazione. è destinato ad essere utilizzato durante la lettura di informazioni. I browser memorizzeranno nella cache il risultato da una richiesta GET e, se viene ripetuta la stessa richiesta GET, visualizzeranno il risultato memorizzato nella cache anziché rieseguire l'intera richiesta.
Questo non è un difetto nell'elaborazione del browser; è deliberatamente progettato per funzionare in questo modo in modo da rendere le chiamate GET più efficienti. Una chiamata GET sta semplicemente recuperando le informazioni; non ha lo scopo di modificare alcuna informazione sul server, motivo per cui richiedere nuovamente i dati dovrebbe restituire gli stessi risultati.
Il metodo POST è per spedizione o l'aggiornamento delle informazioni sul server. Questo tipo di chiamata dovrebbe modificare i dati, motivo per cui i risultati restituiti da due chiamate POST identiche potrebbero benissimo essere completamente diversi l'uno dall'altro. I valori iniziali prima della seconda chiamata POST saranno diversi dai valori precedenti alla prima perché la chiamata iniziale avrà aggiornato almeno alcuni di questi valori. Pertanto, una chiamata POST otterrà sempre la risposta dal server anziché conservare una copia cache della risposta precedente.
Come scegliere GET o POST
Invece di scegliere tra GET e POST in base alla quantità di dati che stai trasmettendo nella tua chiamata Ajax, dovresti scegliere in base a ciò che la chiamata Ajax sta effettivamente facendo.
Se la chiamata deve recuperare i dati dal server, utilizzare GET. Se si prevede che il valore da recuperare vari nel tempo a seguito dell'aggiornamento di altri processi, aggiungere un parametro dell'ora corrente a quello che stai passando nella tua chiamata GET in modo che le chiamate successive non utilizzino una copia cache precedente del risultato che non è più corretta.
Usa POST se la tua chiamata scriverà qualsiasi dato sul server.
In effetti, non dovresti usare questo criterio solo per selezionare tra GET e POST per le tue chiamate Ajax, ma anche quando selezioni quali dovrebbero essere usati per elaborare i moduli sulla tua pagina web.