Ko uporabljate Ajax (Asinhroni JavaScript in XML) za dostop do strežnika brez ponovnega nalaganja spletne strani imate dve možnosti, kako podatke za zahtevo posredovati strežniku: GET ali POST.
To sta isti dve možnosti, ki ju imate pri pošiljanju zahtev na strežnik za nalaganje nove strani, vendar z dvema razlikama. Prva je ta, da zahtevate le majhen podatek namesto celotne spletne strani. Druga in najbolj opazna razlika je, da ker se zahteva Ajax ne pojavi v naslovni vrstici, obiskovalci ob vložitvi zahteve ne bodo opazili razlike.
Klici, izvedeni s pomočjo GET, polja in njihove vrednosti ne bodo izpostavili nikjer, kar z uporabo POST ne bo izpostavljeno tudi, ko je klic opravljen iz Ajaxa.
Česa ne bi smeli storiti
Kako naj se odločimo, katero od teh dveh možnosti je treba uporabiti?
Napaka, ki bi jo lahko storili nekateri začetniki, je, da GET uporabljajo za večino svojih klicev preprosto zato, ker jih je enostavneje kodirati. Najbolj opazna razlika med klici GET in POST v Ajaxu je ta, da imajo klici GET še vedno enako omejitev glede količine podatkov, ki jih je mogoče posredovati kot pri zahtevi za nalaganje nove strani.
Razlika je le v tem, da obdelujete le majhno količino podatkov z zahtevo Ajax (ali vsaj tako ste bi ga morali uporabiti), veliko manj je verjetno, da boste v Ajaxu naleteli na to omejitev dolžine, kot bi jo naložili celoten splet stran. Začetnik si lahko rezervira z uporabo zahtevkov POST za nekaj primerov, ko jim mora posredovati več informacij, ki jih omogoča metoda GET.
Najboljša rešitev, če imate takšne podatke, je več klicev Ajax, ki prenesejo nekaj informacij hkrati. Če boste v enem klicu Ajax posredovali ogromne količine podatkov, bi bilo verjetno bolje, da jih preprosto ponovno naložite celotna stran, saj ne bo bistvenih razlik v času obdelave, ko so velike količine podatkov vpleten.
Če torej količina podatkov, ki jih je treba posredovati, ni dober razlog za izbiro med GET in POST, kaj naj uporabimo, da se odločimo?
Ti dve metodi sta bili dejansko postavljeni za povsem različne namene, razlike med delovanjem pa so deloma posledica razlike v tem, za kaj naj bi se uporabljali. To ne velja samo za uporabo GET in POST iz Ajaxa, ampak tudi kjer koli te metode lahko uporabimo.
Namen GET in POST
GET se uporablja kot ime pove: do dobiti informacije. namenjen je za uporabo, ko berete informacije. Brskalniki bodo predpomnili rezultat iz GET zahteve in če bo ista zahteva GET ponovno poslana, bodo prikazali predpomnjeni rezultat, ne pa da bi znova zagnali celotno zahtevo.
To ni napaka pri obdelavi brskalnika; je namerno zasnovan tako, da omogoča bolj učinkovite klice GET. Klic GET je samo pridobivanje informacij; ni mišljeno, da bi spremenili kakršne koli podatke na strežniku, zato bi moralo ponovno zahtevati podatke, da dobijo enake rezultate.
Metoda POST je za objava ali posodabljanje informacij na strežniku. Pričakuje se, da bo ta vrsta klica spremenila podatke, zato se lahko rezultati, ki so bili vrnjeni iz dveh identičnih klicev POST, popolnoma razlikujejo med seboj. Začetne vrednosti pred drugim klicem POST se bodo razlikovale od vrednosti pred prvim, ker bo začetni klic posodobil vsaj nekatere od teh vrednosti. Klic POST bo torej vedno dobil odziv strežnika, namesto da bi ohranil predpomnjeno kopijo predhodnega odgovora.
Kako izbrati GET ali POST
Namesto, da izbirate med GET in POST na podlagi količine podatkov, ki jih posredujete v klicu Ajax, raje izberite, kaj dejansko kliče Ajax.
Če je klic priklicati podatke s strežnika, uporabite GET. Če se pričakuje, da se vrednost, ki jo je treba pridobiti, spreminja sčasoma zaradi drugih posodobitev, dodajte trenutni časovni parameter v kaj posredujete v klicu GET, da poznejši klici ne bodo uporabili predhodne predpomnjene kopije rezultata, ki ni več pravilno.
Uporabite POST, če bo vaš klic pisal podatke na strežnik.
Pravzaprav tega merila ne smete uporabljati samo za izbiro med GET in POST za klice Ajax, ampak tudi za izbiro, ki naj bo uporabljena za obdelavo obrazcev na vaši spletni strani.