Quando si utilizza 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 disponibili quando si passano 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 utilizzando GET non esporranno i campi e i loro valori ovunque che l'utilizzo di POST non esponga anche quando la chiamata viene effettuata da Ajax.
Quindi, come dovremmo fare la scelta su 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ì che dovresti usarli), è molto meno probabile che tu abbia questo limite di lunghezza all'interno di Ajax come faresti con caricamento di una pagina Web completa. 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 ricaricando semplicemente l'intera pagina poiché non ci saranno differenze significative nel tempo di elaborazione quando sono coinvolte enormi quantità di dati.
Quindi, se la quantità di dati da trasmettere non è un buon motivo 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.
GET è usato come suggerisce il nome: a ottenere informazione. deve 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.
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 orario corrente a ciò che si sta passando nella chiamata GET in modo che le chiamate successive non utilizzino una copia cache precedente del risultato questo non è più corretto.
Usa POST se la tua chiamata scriverà qualsiasi dato sul server.