Kad Ajax lietot GET un POST

Kad lietojat Ajax (Asinhronā JavaScript un XML), lai piekļūtu serverim, nepārlādējot Web lapu, jums ir divas izvēles iespējas, kā pārsūtīt pieprasījuma informāciju serverim: GET vai POST.

Šīs ir tās pašas divas iespējas, kuras jums ir, pārsūtot serverim pieprasījumus ielādēt jaunu lapu, taču ar divām atšķirībām. Pirmais ir tas, ka visas tīmekļa lapas vietā jūs pieprasāt tikai nelielu informācijas daļu. Otrā un visievērojamākā atšķirība ir tā, ka tā kā Ajax pieprasījums neparādās adreses joslā, apmeklētāji nepamanīs atšķirību pieprasījuma sastādīšanas laikā.

Zvani, kas veikti, izmantojot GET, laukus un to vērtības nepakļaus nekur citur, ko POST lietošana arī neatklāj, kad zvans tiek veikts no Ajax.

Kas jums nevajadzētu darīt

Tātad, kā mums vajadzētu izvēlēties, kura no šīm divām alternatīvām būtu jāizmanto?

Kļūda, ko daži iesācēji varētu pieļaut, ir GET izmantošanai lielākajā daļā zvanu tikai tāpēc, ka abiem ir vieglāk kodēt. Visievērojamākā atšķirība starp GET un POST zvaniem Ajax ir tāda, ka GET zvaniem joprojām ir tāds pats nododamo datu apjoma ierobežojums kā pieprasot jaunas lapas ielādi.

instagram viewer

Vienīgā atšķirība ir tā, ka tāpēc, ka apstrādājat tikai nelielu datu daudzumu ar Ajax pieprasījumu (vai vismaz tas ir tas, ko jūs vajadzētu to izmantot), jūs daudz mazāk ticams, ka Ajax iekšienē saskarsities ar šo garuma ierobežojumu, tāpat kā jūs ielādētu pilnu tīmekli lappuse. Iesācējs var rezervēt, izmantojot POST pieprasījumus, par dažiem gadījumiem, kad viņiem ir jānodod vairāk informācijas, ko atļauj GET metode.

Labākais risinājums, ja jums ir daudz nododamu datu, piemēram, tas ir vairāku Ajax zvanu veikšana, pārraidot dažas informācijas vienības vienlaikus. Ja vienā Ajax zvanā jūs nodosit milzīgus datu apjomus, jūs, iespējams, būtu labāk vienkārši pārlādēt visu lapu, jo apstrādes laikā, kad ir milzīgs datu apjoms, būtisku atšķirību nebūs iesaistīti.

Tātad, ja nododamais datu apjoms nav pietiekams iemesls, lai izvēlētos starp GET un POST, tad kas mums jāizmanto, lai izlemtu?

Šīs divas metodes faktiski tika izveidotas pilnīgi atšķirīgiem mērķiem, un atšķirības starp to darbošanos daļēji izriet no atšķirības to, kam tās paredzētas. Tas attiecas ne tikai uz Ajax GET un POST izmantošanu, bet arī jebkur, kur šīs metodes varētu izmantot.

GET un POST mērķis

GET tiek izmantots, kā norāda nosaukums: līdz gūt informācija. to paredzēts izmantot, lasot informāciju. Pārlūkprogrammas kešatmiņā saglabā GET pieprasījuma rezultātu, un, ja tas pats GET pieprasījums tiek veikts vēlreiz, viņi parādīs kešatmiņā saglabāto rezultātu, nevis visa pieprasījuma atkārtotu palaišanu.

Tas nav kļūda pārlūka apstrādē; tas ir apzināti izstrādāts, lai darbotos šādā veidā, lai padarītu GET zvanus efektīvākus. GET zvans ir tikai informācijas izguve; tas nav domāts, lai mainītu jebkādu informāciju uz servera, tāpēc datu atkārtotai pieprasīšanai ir jāatdod tie paši rezultāti.

POST metode ir paredzēta norīkošana vai informācijas atjaunināšana serverī. Paredzams, ka šāda veida zvans mainīs datus, tāpēc rezultāti, kas iegūti no diviem identiskiem POST zvaniem, ļoti var atšķirties viens no otra. Sākotnējās vērtības pirms otrā POST zvana atšķirsies no vērtībām pirms pirmā POST, jo sākotnējā zvana laikā būs atjauninātas vismaz dažas no šīm vērtībām. Tāpēc POST zvans vienmēr saņems atbildi no servera, nevis saglabā iepriekšējās atbildes kešatmiņā saglabātu kopiju.

Kā izvēlēties GET vai POST

Tā vietā, lai izvēlētos starp GET un POST, pamatojoties uz Ajax zvanā nodoto datu daudzumu, jums vajadzētu izvēlēties, pamatojoties uz to, ko Ajax zvans faktiski dara.

Ja zvana mērķis ir iegūt datus no servera, izmantojiet GET. Ja sagaidāms, ka izgūstamā vērtība laika gaitā mainīsies citu procesu rezultātā to atjauninot, pievienojiet pašreizējā laika parametru ko jūs nododat savā GET zvanā, lai vēlāk veiktie zvani neizmantotu tā rezultāta agrāku kešatmiņā saglabāto kopiju, kas vairs nav pareizi.

Izmantojiet POST, ja jūsu zvana laikā serverim tiks rakstīti kādi dati.

Faktiski jums vajadzētu izmantot šo kritēriju ne tikai, lai izvēlētos starp GET un POST saviem Ajax zvaniem, bet arī izvēloties, kurš jāizmanto veidlapu apstrādei jūsu tīmekļa vietnē.