Problem z odświeżaniem strony. |
Problem z odświeżaniem strony. |
9.10.2016, 16:57:40
Post
#1
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 3.05.2015 Ostrzeżenie: (0%) |
[Java][/Java]Więc, piszę skrypt, który co sekundę odpytuje bazę danych o odpowiednie dane. Wszystko za pomocą ajax. Poza tym, z formularza jest wykonywany plik php, który dodaje co jakiś czas rekordy do bazy. I tu zaczyna się problem. Po kilkunastu sekundach skrypt pada. Tak jakby setTimeout postanowił zaniemówić. Ktoś może spotkał się z czymś takim?
Funkcja odswiezaj i wstaw
Funkcja getData
Ten post edytował MalKavar 9.10.2016, 17:01:39 |
|
|
9.10.2016, 17:13:18
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 783 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Nie uważasz, że za dużo odwołań rekurencyjnych?
-------------------- |
|
|
9.10.2016, 17:21:49
Post
#3
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 3.05.2015 Ostrzeżenie: (0%) |
W funkcji getDate w sensie? Jak widać wyżej obie funkcje korzystają z getDate - o ile dla odbierania danych można przeżyć odpowiedź po np 5 sekundach(przyjmuję, że kilka razy się może nie wykonać z powodu braku dostępu do pliku), o tyle dla wysyłania nie mogę pozwolić na stratę żadnego wysłanego zapytania. Prznajmniej takie jest moje myślenie. Samo wysyłanie się poprawiło po wprowadzeniu tych rekurencji, wysyła się w 99% wypadków, jednak z odbieraniem gorzej - jak napisałem wyżej, po 10, max 20 sekundach skrypt zdaje się zaprzestawać akcji.
|
|
|
9.10.2016, 17:27:00
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 783 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Nie wiem jak rozumiem stratę wysyłanego zapytania.
Ponowienie wysyłania powinno nastąpić w funkcji zdefiniowanej we właściwości onreadystatechange obiektu. Tam sprawdzasz wynik, odświeżasz div na jego podstawie i wywołujesz ponownie funkcję. -------------------- |
|
|
9.10.2016, 17:33:36
Post
#5
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 3.05.2015 Ostrzeżenie: (0%) |
Możesz to wyjaśnić dokładniej bo nie do końca rozumiem. W moim założeniu
jeśli(readystate == 4 lub readystate == 0) wykonuj zadanie w przeciwnym wypadku wykonaj się ponownie |
|
|
9.10.2016, 17:39:29
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 375 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
A gdzie tu jakieś kolejkowanie zadań? IMO powinieneś użyć promise, po zakończeniu albo timeoucie wysłać jeszcze raz niezapisane dane. No i XHR kompletnie nie pasuje do takiego zadania.
-------------------- |
|
|
9.10.2016, 17:46:09
Post
#7
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 3.05.2015 Ostrzeżenie: (0%) |
@viking - jakieś porady do tego, żeby to działało sprawnie? Jakiś inny sposób oprócz XHR?
|
|
|
9.10.2016, 17:51:00
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 783 Pomógł: 1826 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Ja nie wiem co chcesz osiągnąć, ale może taki przykład Ci w jakiś sposób pomoże: https://jsfiddle.net/w3yhnzmw/
-------------------- |
|
|
9.10.2016, 18:06:42
Post
#9
|
|
Grupa: Zarejestrowani Postów: 6 375 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
To nie JS powinien zajeżdżać serwer co sekundę tylko serwer powinien informować że nastąpiła zmiana. Zatem https://developer.mozilla.org/en-US/docs/We...ver-sent_events
Zapis - zależy jak to działa. -------------------- |
|
|
9.10.2016, 18:16:15
Post
#10
|
|
Grupa: Zarejestrowani Postów: 23 Pomógł: 0 Dołączył: 3.05.2015 Ostrzeżenie: (0%) |
Hmm... Nie pomyślałem o takim rozwiązaniu.
@viking, z tego co widzę na pierwszy rzut oka - twoje rozwiązanie jest o wiele lepsze. Postaram się je szybko wprowadzić. W razie problemów mogę liczyć na twoją pomoc na PW? Javascript nie jest moją mocną stroną. P.S Z tego co wyczytałem rozwiązanie nie jest wspierane przez IE i tylko częściowo przez Safari. Da radę zrobić, żeby i na tych przeglądarkach to zadziałało bez zarzutu? Zależy mi głównie na Safari. @trueblue Twoje rozwiązanie póki co działa bez zarzutu, ale wciąż sprawdzam. |
|
|
9.10.2016, 18:26:14
Post
#11
|
|
Grupa: Zarejestrowani Postów: 6 375 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Standardowo przez polyfille https://github.com/Yaffle/EventSource
-------------------- |
|
|
Wersja Lo-Fi | Aktualny czas: 1.11.2024 - 02:05 |