Când utilizați 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 a transmite informațiile pentru solicitarea 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ă, deoarece cererea Ajax nu apare în bara de adrese, vizitatorii dvs. nu vor observa o diferență atunci când cererea este făcută.
Apelurile efectuate cu GET nu vor expune câmpurile și valorile lor nicăieri, încât utilizarea POST nu se expune și atunci când apelul este făcut de la Ajax.
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ă la cantitatea de date care pot fi transmise ca la solicitarea unei noi încărcări de pagini..
Singura diferență este că, deoarece prelucrați doar o cantitate mică de date cu o solicitare Ajax (sau cel puțin așa ar trebui să o utilizați), este mult mai puțin probabil să rulați această limită de lungime din interiorul Ajax, cum ați face cu încărcarea unei pagini web complete. 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 întreaga pagină, deoarece nu va exista nicio diferență semnificativă în timpul procesării când sunt implicate cantități uriașe de date..
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 sunt destinate a fi 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.
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 bine 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.
Î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 anterior. asta nu mai este corect.
Utilizați POST dacă apelul dvs. va scrie date pe server deloc.