Kedy použiť GET a POST v Ajaxe

click fraud protection

Keď používate ajax (Asynchrónny JavaScript a XML) na prístup na server bez opätovného načítania webovej stránky, máte dve možnosti, ako preniesť informácie o požiadavke na server: GET alebo POST.

Toto sú rovnaké dve možnosti, ktoré máte pri odovzdávaní požiadaviek na server na načítanie novej stránky, ale s dvoma rozdielmi. Prvým je, že namiesto celej webovej stránky požadujete iba malú časť informácií. Druhým a najviditeľnejším rozdielom je to, že keďže sa žiadosť Ajax nezobrazí v paneli s adresou, vaši návštevníci si pri podaní žiadosti nevšimnú rozdiel.

Hovory uskutočnené pomocou programu GET nevystavia polia a ich hodnoty kdekoľvek, ktoré pomocou POST nevystavia, aj keď sa uskutoční hovor z Ajaxu.

Čo by ste nemali robiť

Ako by sme teda mali zvoliť, ktorá z týchto dvoch alternatív by sa mala použiť?

Chyba, ktorú by mohli urobiť niektorí začiatočníci, je používať službu GET na väčšinu svojich hovorov jednoducho preto, že je ľahšie kódovať. Najviditeľnejším rozdielom medzi volaniami GET a POST v Ajaxe je to, že volania GET majú stále rovnaký limit na množstvo údajov, ktoré je možné odovzdať ako pri požiadavke na nové načítanie stránky.

instagram viewer

Jediný rozdiel je v tom, že spracovávate iba malé množstvo údajov s požiadavkou Ajax (alebo aspoň tak by ste ju mali použiť), je oveľa menej pravdepodobné, že sa do tohto obmedzenia dĺžky dostanete z Ajaxu, ako by ste pri načítaní celého webu str. Začiatočník si môže vyhradiť použitie POST žiadostí v niekoľkých prípadoch, keď potrebujú odovzdať viac informácií, ktoré umožňuje metóda GET.

Najlepšie riešenie, keď máte k dispozícii veľa údajov, je uskutočniť viac hovorov Ajax a súčasne odovzdať niekoľko informácií naraz. Ak sa chystáte odovzdať obrovské množstvo údajov v jednom hovore Ajax, pravdepodobne by bolo lepšie jednoducho znova načítať celú stránku, pretože pri veľkom množstve údajov nebude žiadny významný rozdiel v čase spracovania zapojení.

Takže, ak množstvo dát, ktoré sa má odovzdať, nie je dobrým dôvodom pre výber medzi GET a POST, čo by sme mali použiť na rozhodnutie?

Tieto dve metódy boli v skutočnosti stanovené na úplne odlišné účely a rozdiely medzi tým, ako fungujú, sú čiastočne dôsledkom rozdielu v tom, na čo sú určené. Toto sa netýka iba použitia GET a POST od Ajaxu, ale skutočne kdekoľvek by sa tieto metódy mohli použiť.

Účel GET a POST

GET sa používa ako názov napovedá: get informácie. je určený na použitie pri čítaní informácií. Prehliadače budú ukladať do vyrovnávacej pamäte výsledok z požiadavky GET, a ak sa rovnaká požiadavka GET vykoná znova, zobrazia skôr výsledok v medzipamäti, než aby znova spustili celú žiadosť.

Toto nie je chyba v spracovaní prehliadača; je zámerne navrhnutý tak, aby fungoval takým spôsobom, aby zefektívnil hovory GET. Hovor GET práve vyhľadáva informácie; nie je to určené na zmenu akýchkoľvek informácií na serveri, a preto by opätovné vyžiadanie údajov malo priniesť rovnaké výsledky.

Metóda POST je určená pre vysielania alebo aktualizáciu informácií na serveri. Očakáva sa, že tento typ hovoru zmení údaje, a preto sa výsledky vrátené z dvoch identických hovorov POST môžu veľmi dobre líšiť. Počiatočné hodnoty pred druhým volaním POST sa budú líšiť od hodnôt pred prvým volaním, pretože počiatočný hovor bude aktualizovať aspoň niektoré z týchto hodnôt. Hovor POST preto vždy získa odpoveď zo servera namiesto toho, aby si ponechal kópiu predchádzajúcej odpovede v pamäti.

Ako si vybrať GET alebo POST

Namiesto toho, aby ste si vybrali medzi GET a POST na základe množstva údajov, ktoré odovzdávate v hovore Ajax, mali by ste si vybrať na základe toho, čo hovor Ajax skutočne robí.

Ak sa má volať načítať údaje zo servera, použite príkaz GET. Ak sa očakáva, že hodnota, ktorá sa má načítať, sa bude v priebehu času meniť v dôsledku iných procesov, ktoré ju aktualizujú, pridajte aktuálny parameter času do čo odovzdávate vo svojom GET hovore, aby neskoršie hovory nepoužívali skôr uloženú kópiu výsledku, ktorý už nie je v pamäti správna.

Ak váš hovor chystá na server zapísať akékoľvek údaje, použite POST.

Toto kritérium by ste v skutočnosti nemali používať iba na výber medzi GET a POST pre hovory Ajax, ale aj pri výbere, ktoré sa majú použiť na spracovanie formulárov na vašej webovej stránke.

instagram story viewer