Când folosești Ajax (JavaScript asincron și XML) pentru a accesa serverul fără a reîncărca pagina web, aveți două opțiuni cu privire la modul de transmitere a informațiilor pentru solicitare către server: GET sau POST.
Acestea sunt aceleași două opțiuni pe care le aveți la trecerea cererilor către server pentru a încărca o pagină nouă, dar cu două diferențe. Primul este că solicitați doar o informație mică în loc de o pagină web întreagă. A doua și cea mai vizibilă diferență este că, din moment ce cererea Ajax nu apare în bara de adrese, vizitatorii dvs. nu vor observa o diferență atunci când este făcută cererea.
Apelurile efectuate cu GET nu vor expune câmpurile și valorile lor nicăieri, încât utilizarea POST nu expune și atunci când apelul este făcut de la Ajax.
Ce nu ar trebui să faci
Deci, cum ar trebui să alegem care dintre aceste două alternative ar trebui utilizate?
O greșeală pe care ar putea-o face unii începători este să folosească GET pentru majoritatea apelurilor lor, pur și simplu pentru că este cel mai ușor dintre cei doi. Cea mai vizibilă diferență între apelurile GET și POST în Ajax este că apelurile GET au în continuare aceeași limită pentru cantitatea de date care pot fi transmise ca la solicitarea unei noi încărcări de pagini.
Singura diferență este că, deoarece procesați doar o cantitate mică de date cu o solicitare Ajax (sau cel puțin așa sunteți ar trebui să-l folosești), este mult mai puțin probabil să rulați această limită de lungime din interiorul Ajax, așa cum ați face cu încărcarea unui web pagină. Un începător poate rezerva folosind cererile POST pentru puținele cazuri în care au nevoie să transmită mai multe informații pe care le permite metoda GET.
Cea mai bună soluție atunci când aveți o mulțime de date pentru a transmite așa este să efectuați mai multe apeluri Ajax care trec câteva informații simultan. Dacă veți transmite cantități uriașe de date toate într-un singur apel Ajax, probabil că ar fi mai bine să reîncărcați pur și simplu întreaga pagină, întrucât nu va exista nicio diferență semnificativă în timpul procesării când sunt cantități uriașe de date implicat.
Deci, dacă cantitatea de date care trebuie transmise nu este un motiv bun pentru a alege între GET și POST, atunci ce ar trebui să folosim pentru a decide?
Aceste două metode au fost, de fapt, stabilite în scopuri complet diferite, iar diferențele dintre modul de funcționare se datorează, în parte, diferenței în ceea ce urmează să fie utilizate. Acest lucru nu se aplică numai utilizării GET și POST de la Ajax, dar chiar și oriunde s-ar putea folosi aceste metode.
Scopul GET și POST
GET este folosit așa cum numele implică: obține informație. este destinat să fie utilizat atunci când citiți informații. Navigatoarele vor memora în cache rezultatul dintr-o solicitare GET și dacă se va face din nou aceeași solicitare GET, vor afișa rezultatul în cache, mai curând decât să ruleze întreaga solicitare.
Acesta nu este un defect în procesarea browserului; este conceput în mod deliberat să funcționeze astfel încât să facă apelurile GET mai eficiente. Un apel GET este doar preluarea informațiilor; nu este menit să schimbe nicio informație pe server, motiv pentru care solicitarea din nou a datelor ar trebui să returneze aceleași rezultate.
Metoda POST este pentru postare sau actualizarea informațiilor pe server. Este de așteptat ca acest tip de apel să schimbe datele, motiv pentru care rezultatele returnate de la două apeluri POST identice pot fi foarte diferite între ele. Valorile inițiale înainte de al doilea apel POST vor fi diferite de valorile anterioare primului, deoarece apelul inițial va fi actualizat cel puțin unele dintre aceste valori. Prin urmare, un apel POST va obține întotdeauna răspunsul de la server, mai degrabă decât să păstreze o copie în cache a răspunsului anterior.
Cum să alegeți GET sau POST
În loc să alegeți între GET și POST în funcție de cantitatea de date pe care le transmiteți în apelul dvs. Ajax, ar trebui să alegeți în funcție de ceea ce face efectiv apelul Ajax.
Dacă apelul este pentru a prelua date de pe server, atunci utilizați GET. Dacă se preconizează că valoarea preluată va varia în timp ca urmare a altor procese de actualizare a acesteia, adăugați un parametru timp curent la ceea ce treceți în apelul dvs. GET, astfel încât apelurile ulterioare să nu utilizeze o copie în cache a rezultatului care nu mai este corect.
Utilizați POST dacă apelul dvs. va scrie date pe server deloc.
De fapt, nu trebuie să utilizați acest criteriu numai pentru a selecta între GET și POST pentru apelurile dvs. Ajax, ci și pentru a selecta care ar trebui să fie utilizate pentru procesarea formularelor de pe pagina dvs. web.