![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 14.01.2004 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Witam, nie wiem czy to do końca dobry dział, bo w grę wchodzi też AJAX. Jeśli zły to proszę o przeniesienie.
Problem jest taki: Mam skrypt, który ajaxem wysyła dane do skryptu php i odbiera wyniki. Po otrzymaniu pierwszej porcji wyników wstrzymuje działanie na określony czas i po tym czasie wywołuje się po raz kolejny. Chcę żeby działo się tak tak długo jak skrypt php będzie miał co robić (wysyłka newslettera). Jeżeli skrypt php wyśle wszystkie mejle chcę żeby działanie skryptu wywołującego się zakończyło. I tutaj mam problem, bo po otrzymaniu komunikatu o wysłaniu wszystkich mejli skrypt odczekuje swój interwał czasowy i działa dalej. Oto kod:
Generalnie skrypt nie powinien się wywołać poraz kolejny kiedy otrzyma potwierdzenie o wysyłce mejli pod wszystkie adresy, niemniej i tak się wywołuje. Zrobiłem:
Ale wtedy skrypt nie wykonuje się w ogóle. Próbowałem również z return false na końcu funkcji wyslijSzablon, ale wtedy skrypt również się nie wykonywał w ogóle. Może ktoś nakierować jak to rozwiązać? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Pomyliłeś chyba setInterval z setTimeout.
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 14.01.2004 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Nie pomyliłem. Setinterval ustawia czas, po którym skrypt wykona wysyłkę pod kolejną porcję mejli. SetTimeOut w tym miejscu
zakończyłby mi wykonywanie skryptu po pierwszej porcji mejli, a tego nie chcę.... |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
setInterval wykonuje funkcję co jakiś interwał czasowy, dopóki nie zrobisz clearInterval. setTimeout wykonuje funkcje tylko raz po pewnym czasie.
W Twoim przypadku funkcja stateChanged będzie robić setTimeout za każdym razem, chyba, że xmlhttp.responseText == 'Newsletter został wysłany do wszystkich subskrybentów.' Ten post edytował redeemer 17.07.2012, 13:15:13 -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 116 Pomógł: 0 Dołączył: 14.01.2004 Skąd: Zielona Góra Ostrzeżenie: (0%) ![]() ![]() |
Masz rację, już działa jak trzeba. dzięki
![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.07.2025 - 20:00 |