Rəylər

Ajax Server tələbləri üçün GET və POST istifadə etməlisiniz

Ajax Server tələbləri üçün GET və POST istifadə etməlisiniz

Veb səhifəni yenidən yükləmədən serverə daxil olmaq üçün Ajax (Asinxron JavaScript və XML) istifadə edərkən, sorğu üçün məlumatı serverə necə ötürməyinizə dair iki seçiminiz var: GET və ya POST.

Bunlar yeni bir səhifə yükləmək üçün serverə sorğu göndərərkən əldə etdiyiniz eyni iki seçimdir. Birincisi, bütün bir veb səhifənin əvəzinə yalnız kiçik bir məlumat tələb etməyinizdir. İkinci və ən nəzərə çarpan fərq, Ajax sorğusu ünvan çubuğunda görünmədiyi üçün qonaqlar sorğu edildikdə bir fərq görməyəcəklər.

GET istifadə edərək edilən zənglər, sahələri və dəyərlərini heç yerdə açmayacaq ki, POST-dan istifadə də Ajax-dan zəng edildikdə məruz qalmır.

Nə etməməlisən

Bəs, bu iki alternativin hansından istifadə olunacağını necə seçməliyik?

Bəzi başlayanların edə biləcəyi bir səhv, zənglərin əksəriyyəti üçün GET istifadə etməkdir, çünki kodlaşdırmaq ikisinin asanlığıdır. Ajax-da GET və POST zəngləri arasındakı ən nəzərə çarpan fərq, GET zənglərinin yeni bir səhifə yükləməsini istədiyi zaman ötürülən məlumatların miqdarında eyni həddə sahib olmasıdır.

Yalnız fərq, yalnız bir Ajax tələbi ilə az miqdarda məlumat emal etdiyiniz (və ya heç olmasa istifadə etməyiniz lazım olduğuna görə), Ajax daxilindəki bu uzunluq həddinə girmək şansınız azdır tam veb səhifə yükləyir. Bir başlanğıc, GET metodunun icazə verdiyi daha çox məlumat verməli olduqları bir neçə hal üçün POST sorğularından istifadə edərək ehtiyat edə bilər.

Belə bir çox məlumat verdiyiniz zaman ən yaxşı həll, bir anda bir neçə məlumat ötürən çox Ajax zəng etməkdir. Bir Ajax zəngində çoxlu miqdarda məlumat ötürmək niyyətindəsinizsə, çox sayda səhifəni yenidən yükləməyiniz daha yaxşı olardı, çünki çoxlu miqdarda məlumat daxil olduqda işləmə müddətində heç bir ciddi fərq olmayacaqdır.

Beləliklə, ötürülən məlumatların miqdarı GET və POST arasında seçim etmək üçün yaxşı bir səbəb deyilsə, onda qərar vermək üçün nədən istifadə etməliyik?

Bu iki metod əslində tamamilə fərqli məqsədlər üçün qurulmuşdur və necə işlədikləri arasındakı fərqlər istifadə edilmək üçün nəzərdə tutulan fərqlə əlaqədar olaraq qismən olur. Bu, yalnız Ajax-dan GET və POST istifadə etməyə aid deyil, həqiqətən də bu metodların tətbiq oluna biləcəyi hər yerdə.

GET və POST'un məqsədi

GET istifadə edildiyi zaman adı nəzərdə tutulur: üçün almaq məlumat. məlumat oxuyarkən istifadə edilməsi nəzərdə tutulur. Brauzerlər bir GET sorğusundan nəticəni önbelleğe keçirəcəklər və eyni GET tələbi yenidən edildikdə, bütün sorğunu yenidən işlətmək əvəzinə yaddaşdakı nəticəni göstərəcəklər.

Bu brauzer emalında nöqsan deyil; qəsdən bu şəkildə işləmək üçün çağırışları daha səmərəli etmək üçün hazırlanmışdır. GET bir zəng yalnız məlumat əldə edir; serverdəki hər hansı bir məlumatı dəyişdirmək üçün nəzərdə tutulmamışdır, buna görə məlumatları yenidən tələb etmək eyni nəticələri qaytarmalıdır.

POST metodu üçündür göndərmə və ya serverdəki məlumatları yeniləmək. Bu növ zəngin məlumatları dəyişdirməsi gözlənilir, buna görə iki eyni POST zəngindən qaytarılmış nəticələr bir-birindən tamamilə fərqli ola bilər. İkinci POST çağırışından əvvəl ilkin dəyərlər birincidən əvvəlki dəyərlərdən fərqli olacaq, çünki ilkin zəng ən azı bəzi dəyərləri yeniləyəcəkdir. Buna görə bir POST çağırışı əvvəlcədən verilən cavabın bir nüsxəsini saxlamaqdan daha çox həmişə serverdən cavab alacaqdır.

Getmək və ya POST seçmək üçün necə

Ajax zənginizdə ötürülən məlumatların miqdarı əsasında GET və POST arasında seçim etmək əvəzinə, Ajax zənginin əslində nə etdiyinə əsaslanaraq seçməlisiniz.

Çağırış serverdən məlumat almaqdırsa, GET istifadə edin. Başqa proseslər nəticəsində alınacaq dəyərin zamanla dəyişməsi gözlənilirsə, GET çağırışında keçdiyinizə cari vaxt parametrini əlavə edin ki, sonrakı zənglər nəticənin əvvəlcədən saxlanmış nüsxəsini istifadə etməsin. bu artıq düzgün deyil.

Çağırışınız serverə hər hansı bir məlumat yazmaq üçün gedirsə POST istifadə edin.

Əslində, bu meyarı yalnız Ajax zəngləriniz üçün GET və POST arasındakı seçim üçün deyil, həm də veb səhifənizdəki formaların işlənməsi üçün istifadə edilərkən istifadə etməlisiniz.