Wanneer u Ajax (Asynchronous JavaScript en XML) gebruikt om toegang te krijgen tot de server zonder de webpagina opnieuw te laden, hebt u twee keuzes om de informatie voor het verzoek aan de server door te geven: GET of POST.
Dit zijn dezelfde twee opties die u hebt wanneer u aanvragen doorgeeft aan de server om een nieuwe pagina te laden, maar met twee verschillen. De eerste is dat u slechts om een klein stukje informatie vraagt in plaats van een hele webpagina. Het tweede en meest opvallende verschil is dat, aangezien het Ajax-verzoek niet in de adresbalk verschijnt, uw bezoekers geen verschil zullen merken wanneer het verzoek wordt gedaan.
Oproepen gedaan met GET zullen de velden en hun waarden nergens blootleggen die met POST niet ook zichtbaar zijn wanneer de oproep wordt gedaan vanuit Ajax.
Dus, hoe moeten we de keuze maken welke van deze twee alternatieven moet worden gebruikt??
Een fout die sommige beginners kunnen maken is om GET te gebruiken voor de meeste van hun oproepen, simpelweg omdat het eenvoudiger is om te coderen. Het meest opvallende verschil tussen GET- en POST-oproepen in Ajax is dat GET-oproepen nog steeds dezelfde limiet hebben op de hoeveelheid gegevens die kunnen worden doorgegeven als bij het aanvragen van een nieuwe pagina laden.
Het enige verschil is dat omdat u slechts een kleine hoeveelheid gegevens verwerkt met een Ajax-verzoek (of tenminste hoe u het zou moeten gebruiken), u veel minder kans hebt om deze lengtelimiet binnen Ajax tegen te komen zoals u zou doen met laden van een complete webpagina. Een beginner kan reserveren met behulp van POST-aanvragen voor de enkele gevallen waarin ze meer informatie moeten doorgeven die de GET-methode toestaat.
De beste oplossing als u zoveel gegevens wilt doorgeven, is om meerdere Ajax-oproepen tegelijkertijd een paar stukjes informatie door te geven. Als je in één Ajax-oproep enorme hoeveelheden gegevens wilt doorgeven, is het waarschijnlijk beter om gewoon de hele pagina opnieuw te laden, omdat er geen significant verschil is in de verwerkingstijd wanneer er grote hoeveelheden gegevens bij betrokken zijn.
Dus als de hoeveelheid gegevens die moet worden doorgegeven geen goede reden is om te kiezen tussen GET en POST, wat moeten we dan gebruiken om te beslissen?
Deze twee methoden zijn in feite opgezet voor totaal verschillende doeleinden, en de verschillen tussen hoe ze werken zijn deels te wijten aan het verschil in waarvoor ze zijn bedoeld. Dit geldt niet alleen voor het gebruik van GET en POST van Ajax, maar echt overal waar deze methoden kunnen worden toegepast.
GET wordt gebruikt zoals de naam al aangeeft: tot krijgen informatie. het is bedoeld om te worden gebruikt wanneer u informatie leest. Browsers zullen het resultaat van een GET-verzoek opslaan in de cache en als hetzelfde GET-verzoek opnieuw wordt gedaan, zullen ze het resultaat in de cache weergeven in plaats van het hele verzoek opnieuw uit te voeren.
Dit is geen fout in de browserverwerking; het is opzettelijk ontworpen om op die manier te werken om GET-oproepen efficiënter te maken. Een GET-oproep haalt alleen de informatie op; het is niet bedoeld om informatie op de server te wijzigen. Daarom zou het opnieuw opvragen van de gegevens dezelfde resultaten moeten opleveren.
De POST-methode is voor plaatsing of informatie op de server bijwerken. Verwacht wordt dat dit type oproep de gegevens zal veranderen. Daarom kunnen de resultaten van twee identieke POST-oproepen heel goed van elkaar verschillen. De beginwaarden vóór de tweede POST-oproep zullen verschillen van de waarden vóór de eerste omdat de eerste oproep ten minste enkele van die waarden heeft bijgewerkt. Een POST-oproep zal daarom altijd het antwoord van de server verkrijgen in plaats van een kopie in de cache van het vorige antwoord te bewaren.
In plaats van te kiezen tussen GET en POST op basis van de hoeveelheid gegevens die u doorgeeft in uw Ajax-oproep, moet u kiezen op basis van wat de Ajax-oproep daadwerkelijk doet.
Gebruik GET als de oproep is om gegevens van de server op te halen. Als de op te halen waarde naar verwachting in de loop van de tijd zal variëren als gevolg van andere processen die deze bijwerken, voeg dan een huidige tijdparameter toe aan wat u doorgeeft in uw GET-oproep zodat de latere oproepen geen eerdere kopie in de cache van het resultaat zullen gebruiken dat is niet langer correct.
Gebruik POST als uw oproep gegevens naar de server gaat schrijven.