Ajax - async: false |
Ajax - async: false |
19.03.2018, 22:00:30
Post
#1
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) |
Witajcie
mam funkcję weryfikującą hasło, która działa tylko kiedy wyłączona jest asynchroniczność, w konsoli pisze, że asynchroniczność zostanie niedługo wyłączona czy istnieje jakiś inny sposób na synchroniczne zapytanie typu ajax?
|
|
|
19.03.2018, 22:08:38
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Oczywiście, że jest. Zmienić async na true...
Dlaczego po prostu tego drugiego wywołania ajax nie wstawisz do callback pierwszego wywołania? -------------------- |
|
|
19.03.2018, 22:15:40
Post
#3
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) |
Oczywiście, że jest. Zmienić async na true... Dlaczego po prostu tego drugiego wywołania ajax nie wstawisz do callback pierwszego wywołania? No właśnie jak mam na true to nie działa, bo chyba nie czeka na informację zwrotną i leci dalej, dopiero jak zmieniłem na false to zaczęło działać poprawnie. Cytat Dlaczego po prostu tego drugiego wywołania ajax nie wstawisz do callback pierwszego wywołania? Bo nie bardzo wiem jak. |
|
|
19.03.2018, 22:20:25
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 Dołączył: 11.03.2014 Ostrzeżenie: (0%) |
Na analogicznej zasadzie jak wstawiłeś linię 19.
-------------------- |
|
|
19.03.2018, 22:50:06
Post
#5
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) |
coś w ten deseń
Ten post edytował topcio 19.03.2018, 22:57:10 |
|
|
19.03.2018, 22:57:16
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Pytanie na początek powinno brzmieć dlaczego w ogóle chcesz rezygnować z asynchroniczności? Powinieneś tak zorganizować kod, żeby prawidłowo działał z asynchronicznym żądaniem HTTP zamiast blokować wszystkie skrypty.
|
|
|
19.03.2018, 22:59:43
Post
#7
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) |
Pytanie na początek powinno brzmieć dlaczego w ogóle chcesz rezygnować z asynchroniczności? Powinieneś tak zorganizować kod, żeby prawidłowo działał z asynchronicznym żądaniem HTTP zamiast blokować wszystkie skrypty. Bo nie wiem jak to w inny sposób ugryźć, jak zmusić kod by najpierw poczekał na ajaxa a potem jechał dalej z koksem. |
|
|
19.03.2018, 23:03:56
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Wygodnie się pisze kod z promise'ami, więc jeśli używasz transpilatora lub jesteś w stanie olać IE11, to polecam.
Ale z Ajaxem też można to ubrać dość ładnie. Po prostu w callbackach wywołuj kolejne działania. |
|
|
19.03.2018, 23:06:15
Post
#9
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) |
coś w ten deseń
No to chyba tak może być Wiesz w ogóle z javascript bawię się od niedawna, i chyba (tak sądzę) trochę już opanowałem, ale jeszcze długa droga przede mną. Wiem że promise to przeszłość więc pewnie się w to zagłębię. Ten post edytował topcio 19.03.2018, 23:09:56 |
|
|
19.03.2018, 23:10:07
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Nie wiem co chcesz dokładnie zrobić.
|
|
|
19.03.2018, 23:11:46
Post
#11
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) |
Nie wiem co chcesz dokładnie zrobić. już tłumaczę. Jest pewna funkcja https://github.com/JillElaine/jquery-idleTi...-idleTimeout.js i do tej funkcji dodaję opcję aby można było odblokować interfejs tylko po wpisaniu hasła. Moja wersja części kodu
Ten post edytował topcio 19.03.2018, 23:13:07 |
|
|
19.03.2018, 23:15:53
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Dlaczego nie zrobisz tego w jednym requeście?
|
|
|
19.03.2018, 23:21:59
Post
#13
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) |
teoretycznie mógłbym, ale ten drugi doszedł potem, kiedy stwierdziłem, że przecież user może być zalogowany na kilku urządzeniach i w tym drugim docelowo będą dana json w mysql z konkretnymi id sesji dla usera, jeśli id sesji się zgadza to wtedy odblokuje, jeśli się nie zgadza wyloguje.
|
|
|
19.03.2018, 23:27:13
Post
#14
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Mimo wszystko zrobiłbym dwie rzeczy za jednym zamachem. To się chwali, że bierzesz pod uwagę możliwość bycia zalogowanym na innym urządzeniu. Nawet to forum tego nie respektuje i bezczelnie wylogowuje
Nadal nie do końca szczegółowo wiem co chcesz zrobić, ale wydaje mi się, że Twój kod ma kilka babolków. na przykład nie wiem po co używasz tu event.preventDefault() i event.stopPropagation(). console.log(a1 + ' ' + a2) też nie za bardzo ma sens w Twoim przypadku. Zrób sobie console.log(a1, a2); Możesz opisać też po prostu dokładniej co chcesz zrobić - co to za apka, kiedy blokuje się interfejs jak dokładnie się go odblokowuje. |
|
|
19.03.2018, 23:39:06
Post
#15
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) |
Projekt to ogólnie rzecz biorąc system zarządzania monitoringiem wizyjnym, dla wielu lokalizacji. Do panelu mogą logować się zarówno klienci jak i obsługa systemu w zależności od uprawnień.
Jest cały czas w rozwoju, w pierwszej fazie miało to być narzędzie tylko dla mnie do zarządzania całym tym bajzlem, ale doszedłem do wniosku, że lepiej będzie jak zrobię system dla wszystkich (łącznie z podglądem on-line itp itd). Więc jeśli ktoś sobie odpali kamerkę i np. sobie pójdzie, to po co ma mi generować non stop streeming, więc pomyślałem, że wylogowuję usera po jakiejś bezczynności. Znalazłem ten skrypcik, https://github.com/JillElaine/jquery-idleTi...-idleTimeout.js, fajny ale brakowało mi w nim potwierdzenia hasłem odblokowania interfejsu. event.preventDefault() i event.stopPropagation(). tych dwóch używam, bo wydaje mi się iż główny skrypt (nie mój) reaguje na kliknięcie, ponieważ bez tego nawet jeśli hasło jest złe to i tak odblokowuje interfejs, a tego chcę uniknąć. Pozostało mi jeszcze zaimplementowanie funkcji blokującej odświeżanie strony. Na razie mam
całego opisu apki to trudno dokonać tak w 5 minut te dwa requesty w php wyglądają następująco:
|
|
|
19.03.2018, 23:46:36
Post
#16
|
|
Grupa: Zarejestrowani Postów: 1 707 Pomógł: 266 Dołączył: 3.07.2012 Skąd: Poznań Ostrzeżenie: (0%) |
Ja raczej wyznaję taką zasadę, że nie powinno się blokować naturalnych zachowań przeglądarki, takich jak odświeżania. Aplikacja powinna sobie z nimi po prostu radzić.
Nie wiem też co to znaczy "blokowanie interfejsu" u Ciebie, ale może lepiej byłoby po prostu zrobić przekierowanie do ekranu logowania po tym czasie nieaktywności? Chyba że nadal można mieć wgląd w ekran, ale bez możliwości klikania na cokolwiek. Mógłbyś to rozwiązać na przykład tak, żeby po upływie tego czasu usunąć ciastko i przy próbie jakiegoś działania po stronie serwera wywalać odpowiedni status HTTP (np. 403 Forbidden) jak nie ma odpowiedniego ciastka. I po stronie klienta wtedy dać odpowiedni monit o wpisanie hasła. W ten sposób nie musisz trzymać żadnych tokenów ani nic takiego, jedynie informację o tym kto był zalogowany. Na przykład mieć cały czas w DOM pole do loginu i hasła, przy czym pole z loginem będzie miało ustawioną wartość na ostatniego zalogowanego, żeby ułatwić mu to ponowne logowanie. Tak głośno myślę, bo pytanie jeszcze na ile chcesz dopieszczać to w kierunku Single Page Application. |
|
|
21.03.2018, 00:43:23
Post
#17
|
|
Grupa: Zarejestrowani Postów: 140 Pomógł: 0 Dołączył: 14.01.2017 Ostrzeżenie: (0%) |
jak zerkniesz w konsolę po zalogowaniu to leci licznik jak dojdzie do 0 to zablokuje
Troszkę przerobiłem, jest w jednym request, teraz działa prawidłowo
|
|
|
Wersja Lo-Fi | Aktualny czas: 24.04.2024 - 12:26 |