Co to jest ukryte żądanie AJAX?
Zauważyłem wzrost użycia ukrytych żądań AJAX zaprojektowanych tak, aby akcja użytkownika wydawała się natychmiastowa. Ten typ żądania AJAX będę określać jako nieblokujący. Jest to żądanie AJAX złożone bez uświadomienia użytkownikowi, że się dzieje, jest wykonywane w tle, a jego działanie jest ciche ( nie ma żadnych szczegółowych informacji o pomyślnym zakończeniu połączenia AJAX ). Celem jest sprawienie, aby operacja wyglądała na natychmiastową, gdy naprawdę się nie zakończyła.
Oto przykłady nieblokującego żądania AJAX;
- Użytkownik klika usuń zbiór e-maili. Przedmioty znikają natychmiast ze skrzynki odbiorczej i mogą kontynuować inne operacje. Tymczasem żądanie AJAX przetwarza usunięcie elementów w tle.
- Użytkownik wypełnia formularz dotyczący nowych rekordów. Kliknięcia zapisz. Nowy element pojawi się na liście natychmiast. Użytkownik może nadal dodawać nowe rekordy.
Aby to wyjaśnić, oto przykłady blokowania żądania AJAX;
- Użytkownik klika usuń zbiór e-maili. Pojawi się kursor klepsydry. Żądanie AJAX jest wysyłane, a gdy odpowiada, kursor klepsydry jest wyłączany. Użytkownik musi poczekać sekundę na zakończenie operacji.
- Użytkownik wypełnia formularz dotyczący nowych rekordów. Kliknięcia zapisz. Formularz zmienia kolor na szary z animacją modułu ładującego AJAX. Wyświetlany jest komunikat „Twoje dane zostały zapisane”, a nowy rekord pojawia się na liście.
Różnica między dwoma powyższymi scenariuszami polega na tym, że nieblokująca konfiguracja AJAX nie zapewnia informacji zwrotnej o wydajności operacyjnej, a blokująca konfiguracja AJAX tak.
Ryzyko ukrytych żądań AJAX
Największe ryzyko tego typu żądania AJAX polega na tym, że aplikacja internetowa może być w zupełnie innym stanie, gdy żądanie AJAX zawiedzie.
Na przykład przykład nieblokujący;
- Użytkownik wybiera kilka wiadomości e-mail. Klika przycisk usuwania. Wydaje się, że operacja odbywa się natychmiast (elementy po prostu znikają z listy). Następnie użytkownik klika przycisk tworzenia i zaczyna pisać nowy e-mail. W tej chwili kod JavaScript wykrywa, że żądanie AJAX nie powiodło się. Skrypt może wyświetlać komunikat o błędzie, ale w tej chwili jest to naprawdę bezcelowe.
Alternatywnie przykład blokujący;
- Użytkownik wybiera kilka wiadomości e-mail. Klika przycisk usuwania. Widzi klepsydrę, ale operacja kończy się niepowodzeniem. Otrzymują komunikat o błędzie „błąd. Bla bla bla”. Wracają z powrotem do listy wiadomości e-mail i nadal mają wybrane wiadomości e-mail, które chcieli usunąć. Mogą spróbować je usunąć ponownie.
Istnieją również inne zagrożenia techniczne związane z wykonywaniem nieblokujących żądań AJAX. Użytkownik może zamknąć przeglądarkę, przejść do innej witryny i może przejść do innej lokalizacji w bieżącej sieci, co sprawia, że kontekst jakiejkolwiek reakcji na błąd jest bez znaczenia.
Dlaczego więc staje się tak popularny?
Facebook, Google, Microsoft itp. Itd. Itd. Wszystkie te duże domeny coraz częściej korzystają z nieblokujących żądań AJAX, aby wydawać się , że operacje są wykonywane natychmiast. Zauważyłem również wzrost liczby edytorów formularzy, które nie mają przycisku Zapisz ani Prześlij . Jak tylko opuścisz pole lub naciśniesz enter. Wartość zostaje zapisana. Nie ma Twój profil został zaktualizowany krok wiadomość lub zapisywania.
Żądania AJAX nie są pewne i nie powinny być traktowane jako zakończone sukcesem, dopóki się nie zakończą, ale tak wiele dużych aplikacji internetowych działa właśnie tak.
Czy te witryny wykorzystują nieblokujące wywołania AJAX do symulacji responsywnych aplikacji, podejmując niepotrzebne ryzyko kosztem szybkiego pojawiania się?
Czy to wzór, który powinniśmy wszyscy stosować, aby pozostać konkurencyjnym?