Kdy použít GET a POST v Ajaxu

click fraud protection

Když používáte Ajax (Asynchronní JavaScript a XML) pro přístup na server bez opětovného načtení webové stránky, máte dvě možnosti, jak předat informace o požadavku serveru: GET nebo POST.

Toto jsou stejné dvě možnosti, které máte při předávání požadavků na server k načtení nové stránky, ale se dvěma rozdíly. První je, že požadujete pouze malou informaci místo celé webové stránky. Druhým a nejzřetelnějším rozdílem je to, že vzhledem k tomu, že se požadavek Ajax v adresním řádku neobjeví, vaši návštěvníci si při podání žádosti nevšimnou rozdílu.

Hovory uskutečněné pomocí GET nevystaví pole a jejich hodnoty kdekoli, které při použití POST také nevystaví, když se uskutečňuje hovor z Ajaxu.

Co byste neměli dělat

Jak bychom tedy měli zvolit, která z těchto dvou alternativ by měla být použita?

Chyba, kterou mohou někteří začátečníci udělat, je použít GET pro většinu jejich hovorů jednoduše proto, že je snazší kódovat dva. Nejviditelnějším rozdílem mezi voláními GET a POST v Ajaxu je to, že volání GET mají stále stejný limit na množství dat, která lze předat jako při požadavku na nové načtení stránky.

instagram viewer

Jediný rozdíl spočívá v tom, že zpracováváte pouze malé množství dat pomocí požadavku Ajax (nebo alespoň tak byste měli použít), je mnohem méně pravděpodobné, že se do tohoto délkového limitu dostanete z Ajaxu, jako byste tomu bylo při načítání celého webu stránka. Začátečník si může vyhradit použití POST požadavků na několik málo případů, kdy potřebují předat více informací, které metoda GET umožňuje.

Nejlepší řešení, když máte hodně dat, která můžete takto předat, je uskutečnit více hovorů Ajax a předat několik informací najednou. Pokud se chystáte předat obrovské množství dat během jediného volání Ajaxu, pravděpodobně by bylo lepší, kdybyste znovu načíst celou stránku, protože v době zpracování obrovského množství dat nebude žádný významný rozdíl v době zpracování zapojen.

Pokud tedy množství předávaných dat není dobrým důvodem pro výběr mezi GET a POST, co bychom měli použít k rozhodnutí?

Tyto dvě metody byly ve skutečnosti stanoveny pro zcela odlišné účely a rozdíly mezi tím, jak fungují, jsou částečně způsobeny rozdílem v tom, pro co jsou určeny. To se netýká pouze použití GET a POST od Ajaxu, ale skutečně kdekoli by tyto metody mohly být použity.

Účel GET a POST

GET se používá, jak název napovídá: dostat informace. je určen k použití při čtení informací. Prohlížeče budou ukládat do mezipaměti výsledek z požadavku GET a pokud bude stejný požadavek GET proveden znovu, zobrazí spíše výsledek v mezipaměti, než znovu spustí celý požadavek.

Toto není chyba ve zpracování prohlížeče; je záměrně navržen tak, aby fungoval tak, aby bylo volání GET efektivnější. Hovor GET právě načítá informace; to nemá za cíl měnit žádné informace na serveru, proto by opětné vyžádání dat mělo přinést stejné výsledky.

Metoda POST je určena pro vysílání nebo aktualizace informací na serveru. Očekává se, že tento typ volání změní data, a proto se výsledky vrácené ze dvou identických volání POST mohou velmi dobře lišit. Počáteční hodnoty před druhým voláním POST se budou lišit od hodnot před prvním, protože počáteční volání bude aktualizovat alespoň některé z těchto hodnot. Hovor POST proto vždy získá odpověď ze serveru, spíše než si ponechá kopii předchozí odpovědi v mezipaměti.

Jak vybrat GET nebo POST

Místo výběru mezi GET a POST na základě množství dat, která předáváte při volání Ajax, byste měli zvolit na základě toho, co volání Ajax skutečně dělá.

Pokud jde o načtení dat ze serveru, použijte GET. Pokud se očekává, že se hodnota, která se má načíst, bude v průběhu času měnit v důsledku dalších procesů, které ji aktualizují, přidejte aktuální parametr času co předáváte při volání GET, aby pozdější hovory nepoužívaly dříve uloženou kopii výsledku, který již není uložen opravit.

Použijte POST, pokud váš hovor bude psát všechna data na server.

Ve skutečnosti byste neměli používat toto kritérium pouze pro výběr mezi GET a POST pro volání Ajax, ale také pro výběr, který by měl být použit pro zpracování formulářů na vaší webové stránce.

instagram story viewer