2013-07-18 24 views
6

Wiem, jak , jak czekać na ajax, aby zakończyć, ale jeśli mam zamiar przekierować stronę po niektórych wywołań ajax są zwolnione, powinienem czekać na ich zakończenie przed przekierowaniem? Czy to ma znaczenie?Czy muszę czekać na ajax, aby przekierować stronę?

+5

Domyślam się, że to zależy od tego, czy musisz wykonać obsługę błędu wokół kodu statusu zwróconego przez wywołanie ajax. Jeśli przekierujesz się przed zakończeniem, to skąd wiesz, że przebiegło poprawnie? – JanR

Odpowiedz

5

Jeśli masz pewność, że wywołanie ajaxa się powiedzie, to po wywołaniu ajax'a przekierowanie nie wpłynie na niego w odniesieniu do serwera. Ale nie zapominaj, że klient może utracić połączenie lub może wystąpić wiele błędów, więc powinieneś poczekać, aby upewnić się, że połączenia były udane. Kolejną kwestią do rozważenia jest to, czy twoje wywołania ajax wpłyną na stronę, do której przekierujesz. W takim przypadku DEFINALNIE poczekaj przed przekierowaniem. Nie będziesz chciał, aby Twój użytkownik został przekierowany na uszkodzoną stronę, ponieważ ich połączenie było powolne lub gdy serwer miał czkawkę.

+0

To prawda. Wywołanie ajax, które zlicza widoki strony, może być po prostu odpalone z zapomnianego. – Lix

+1

Czy ajax jest dobrym sposobem na policzenie odsłon? Nie będzie liczyć użytkowników z wyłączonym JS. –

+0

Tylko około 2% użytkowników ma wyłączony javascript: http://stackoverflow.com/questions/9478737/browser-statistics-on-javascript-disabled. Tak naprawdę to zależy od tego, jak precyzyjnie chcesz być ... Zazwyczaj po prostu ignoruję tych ludzi osobiście. – adavea

1

Polecam czekanie i obsługę możliwych błędów, które mogą wystąpić.

Uzyskujesz bezpieczne połączenie, wykrywanie błędów, lepsze oprogramowanie, wykonując cały proces synchronicznie, co powoduje, że przekierowanie nadchodzi na końcu.

Możesz spędzić 0,1 sekundy więcej egzekucji, ale kogo to obchodzi?

+0

Nieprawda, to proces, który chcę zrobić z ajax jest czymś, co pasuje do 20secs. Tak więc to obchodzi. – vaso123

+0

Minęło trochę czasu, odkąd zrobiłem ten komentarz. To, co powinno być jasne, a ja zasadniczo sugerowałem to samo co zaakceptowana odpowiedź, jest to, że jeśli możesz absolutnie zagwarantować, że wykonanie zakończy się sukcesem, to na pewno możesz przekierować, ale jest szansa, że ​​połączenie będzie po prostu zgubić się lub pojawi się wyjątek, który chcesz obsłużyć. – Jonast92

1

Twierdzę, że Ajax po przekierowaniu nie jest dobrym przykładem użycia Ajax. Zamiast tego zalecam wykonanie zwykłego żądania serwera, a następnie zajęcie się wszystkimi operacjami na serwerze przed przekierowaniem do miejsca docelowego.

Spowoduje to uproszczenie wzoru i dużo mniejszy ruch sieciowy. Zalecam używanie Ajax w przypadkach, gdy chcesz uniknąć ponownego ładowania strony. Jednak w twoim scenariuszu planujesz opuścić stronę zaraz po zakończeniu operacji, więc może powinieneś unikać tego, co Ajax Ci daje.

Powiązane problemy