Når skal jeg bruke GET og POST i Ajax

Når du bruker Ajax (Asynkron JavaScript og XML) for å få tilgang til serveren uten å laste inn websiden på nytt. Du har to valg om hvordan du skal formidle informasjonen for forespørselen til serveren: GET eller POST.

Dette er de samme to alternativene som du har når du sender forespørsler til serveren om å laste inn en ny side, men med to forskjeller. Den første er at du bare ber om et lite stykke informasjon i stedet for en hel webside. Den andre og mest merkbare forskjellen er at siden Ajax-forespørselen ikke vises i adressefeltet, vil de besøkende ikke merke en forskjell når forespørselen sendes.

Samtaler som er gjort ved hjelp av GET, vil ikke eksponere feltene og verdiene deres hvor som helst som ved bruk av POST ikke også blir utsatt når samtalen ringer fra Ajax.

Hva du ikke bør gjøre

Så, hvordan skal vi ta valget om hvilke av disse to alternativene som skal brukes?

En feil som noen nybegynnere kan gjøre, er å bruke GET for de fleste av samtalene sine rett og slett fordi det er den enkleste av de to å kode. Den mest merkbare forskjellen mellom GET- og POST-samtaler i Ajax er at GET-samtaler fremdeles har samme grense for datamengden som kan sendes som når du ber om en ny sideinnlasting.

instagram viewer

Den eneste forskjellen er at fordi du bare behandler en liten mengde data med en Ajax-forespørsel (eller i det minste er det slik du er bør bruke det), det er langt mindre sannsynlig at du vil løpe inn denne lengdegrensen innen Ajax som du ville gjort med å laste et komplett nett side. En nybegynner kan reservere seg ved å bruke POST-forespørsler i noen få tilfeller der de trenger å gi mer informasjon som GET-metoden tillater.

Den beste løsningen når du har mange data å passere sånn, er å foreta flere Ajax-samtaler som gir noen få informasjon om gangen. Hvis du skal overføre enorme datamengder alt i en Ajax-samtale, ville du sannsynligvis ha det bedre å bare laste om hele siden, siden det ikke vil være noen vesentlig forskjell i behandlingstiden når enorme datamengder er involvert.

Så hvis datamengden som skal sendes ikke er en god grunn til å velge mellom GET og POST, hva skal vi bruke for å bestemme?

Disse to metodene ble faktisk satt opp for helt forskjellige formål, og forskjellene mellom hvordan de fungerer er delvis på grunn av forskjellen i hva de er ment å brukes til. Dette gjelder ikke bare bruk av GET og POST fra Ajax, men virkelig hvor som helst disse metodene kan brukes.

Formålet med GET og POST

GET brukes som navnet tilsier: til informasjon. det er ment å brukes når du leser informasjon. Nettlesere bufrer resultatet fra en GET-forespørsel, og hvis den samme GET-forespørselen blir gjort på nytt, vil de vise det hurtigbufrede resultatet i stedet for å kjøre hele forespørselen på nytt.

Dette er ikke en feil i nettleserbehandlingen; den er bevisst designet for å fungere på den måten for å gjøre GET-samtaler mer effektive. Et GET-anrop er bare å hente informasjonen; det er ikke ment å endre noe informasjon på serveren, og det er grunnen til at du ber om de samme resultatene hvis du ber om dataene på nytt.

POST-metoden er til posting eller oppdatere informasjon på serveren. Denne typen samtale forventes å endre dataene, og det er derfor resultatene som returneres fra to identiske POST-samtaler kan være veldig forskjellige fra hverandre. De første verdiene før det andre POST-anropet vil være forskjellige fra verdiene før det første fordi det innledende anropet vil ha oppdatert minst noen av disse verdiene. Et POST-anrop vil derfor alltid få svaret fra serveren i stedet for å lagre en hurtigbufret kopi av forrige svar.

Hvordan velge GET eller POST

I stedet for å velge mellom GET og POST basert på datamengden du sender i Ajax-samtalen, bør du velge basert på hva Ajax-samtalen faktisk gjør.

Hvis samtalen skal hente data fra serveren, bruker du GET. Hvis verdien som skal hentes forventes å variere over tid som et resultat av andre prosesser som oppdaterer den, legger du til en gjeldende tidsparameter til hva du sender i GET-samtalen slik at de senere samtalene ikke bruker en tidligere hurtigbufret kopi av resultatet som ikke lenger er riktig.

Bruk POST hvis samtalen skal skrive data i det hele tatt til serveren.

Faktisk bør du ikke bare bruke dette kriteriet for å velge mellom GET og POST for Ajax-anropene dine, men også for når du velger hvilket som skal brukes til å behandle skjemaer på websiden din.