Kiedy używać GET i POST w Ajaxie

click fraud protection

Kiedy używasz Ajax (Asynchroniczny JavaScript i XML), aby uzyskać dostęp do serwera bez ponownego ładowania strony internetowej, masz dwie możliwości przekazania informacji o żądaniu do serwera: GET lub POST.

Są to te same dwie opcje, które masz przy przekazywaniu żądań do serwera, aby załadować nową stronę, ale z dwiema różnicami. Po pierwsze, żądasz tylko niewielkiej ilości informacji zamiast całej strony internetowej. Druga i najbardziej zauważalna różnica polega na tym, że ponieważ żądanie Ajax nie pojawia się na pasku adresu, odwiedzający nie zauważą różnicy, gdy żądanie zostanie wykonane.

Połączenia wykonane przy użyciu GET nie ujawnią pól i ich wartości w żadnym miejscu, które przy użyciu POST nie ujawniają się również, gdy połączenie jest wykonywane z Ajax.

Czego nie powinieneś robić

Jak więc wybrać, która z tych dwóch alternatyw powinna być zastosowana?

Błędem, który mogą popełnić niektórzy początkujący, jest użycie GET do większości swoich połączeń, ponieważ jest to łatwiejsze do zakodowania. Najbardziej zauważalną różnicą między wywołaniami GET i POST w Ajax jest to, że wywołania GET nadal mają taki sam limit ilości danych, które można przekazać, jak przy żądaniu załadowania nowej strony.

instagram viewer

Jedyna różnica polega na tym, że ponieważ przetwarzasz tylko niewielką ilość danych za pomocą żądania Ajax (a przynajmniej tak to robisz) należy go użyć), znacznie mniejsze jest prawdopodobieństwo przekroczenia tego limitu długości z poziomu Ajax, tak jak przy ładowaniu całej sieci strona. Początkujący może zarezerwować za pomocą żądań POST dla kilku przypadków, w których musi przekazać więcej informacji, na które pozwala metoda GET.

Najlepszym rozwiązaniem, gdy masz tak dużo danych do przekazania, jest wykonywanie wielu wywołań Ajax z przekazywaniem kilku informacji jednocześnie. Jeśli zamierzasz przesyłać ogromne ilości danych w jednym wywołaniu Ajax, prawdopodobnie lepiej byłoby po prostu przeładować całą stronę, ponieważ nie będzie znaczącej różnicy w czasie przetwarzania, gdy są ogromne ilości danych zaangażowany.

Jeśli więc ilość przekazywanych danych nie jest dobrym powodem wyboru między GET i POST, to co powinniśmy wykorzystać, aby podjąć decyzję?

Te dwie metody zostały w rzeczywistości skonfigurowane do zupełnie innych celów, a różnice między ich sposobem działania wynikają częściowo z różnicy w tym, do czego są przeznaczone. Dotyczy to nie tylko używania GET i POST z Ajax, ale tak naprawdę wszędzie tam, gdzie można zastosować te metody.

Cel GET i POST

GET jest używany jak sama nazwa wskazuje: do otrzymać Informacja. jest przeznaczony do użycia podczas czytania informacji. Przeglądarki będą buforować wynik żądania GET, a jeśli to samo żądanie GET zostanie wykonane ponownie, wyświetlą wynik w pamięci podręcznej zamiast ponownie uruchamiać całe żądanie.

Nie stanowi to wady przetwarzania przeglądarki; jest celowo zaprojektowany w taki sposób, aby zwiększyć efektywność połączeń GET. Połączenie GET to tylko pobieranie informacji; nie ma na celu zmiany żadnych informacji na serwerze, dlatego ponowne żądanie danych powinno zwrócić te same wyniki.

Metoda POST jest dla mianowanie lub aktualizowanie informacji na serwerze. Oczekuje się, że ten typ wywołania zmieni dane, dlatego wyniki zwracane z dwóch identycznych wywołań POST mogą się zupełnie różnić od siebie. Początkowe wartości przed drugim wywołaniem POST będą różnić się od wartości przed pierwszym, ponieważ początkowe wywołanie zaktualizuje przynajmniej niektóre z tych wartości. Wywołanie POST będzie zatem zawsze uzyskiwać odpowiedź z serwera, a nie przechowywać w pamięci podręcznej kopii wcześniejszej odpowiedzi.

Jak wybrać GET lub POST

Zamiast wybierać pomiędzy GET i POST w oparciu o ilość danych przekazywanych podczas połączenia Ajax, powinieneś wybrać na podstawie tego, co faktycznie wykonuje połączenie Ajax.

Jeśli połączenie ma pobrać dane z serwera, użyj GET. Jeśli oczekuje się, że wartość, która ma zostać pobrana, będzie zmieniać się w czasie w wyniku aktualizacji jej przez inne procesy, dodaj do niej bieżący parametr czasu co przekazujesz w wywołaniu GET, aby późniejsze połączenia nie korzystały z wcześniejszej kopii wyniku w pamięci podręcznej, która nie jest już poprawny.

Użyj POST, jeśli Twoje połączenie w ogóle zapisuje dane na serwerze.

W rzeczywistości powinieneś używać tego kryterium nie tylko do wybierania między GET i POST dla swoich połączeń Ajax, ale także do wybierania, które powinny być używane do przetwarzania formularzy na twojej stronie internetowej.

instagram story viewer