Autor Wątek: Logowanie do strony, uruchomienie skryptu JS  (Przeczytany 7504 razy)

Offline Xion

  • Moderator
    • xion.log

# Maj 17, 2016, 18:30:28
Cytuj
Btw. Chcesz się bawić w AJAXy na vanilla js? Ostro :).
Fetch API jest czasami prostsze w użyciu niż jQuery, np. jeśli chcesz kontrolować taki aspekty jak to czy wysyłać ciastka czy nie. Jedyny problem to taki, że niektóre stare przeglądarki go nie obsługują; zgadnij które.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Kos

  • Użytkownik
    • kos.gd

# Maj 17, 2016, 18:34:33
Jedyny problem to taki, że niektóre stare przeglądarki go nie obsługują; zgadnij które.

OH COME ON MS


Ale nawet jeśli IE11 zaliczysz do starych, to pozostaje Safari i mobilki. Za wcześnie na to. Chociaż... Polyfill?

Offline LizarD

  • Użytkownik

# Luty 21, 2017, 14:08:45
Logowanie do strony, jaką różnicę mam w dwóch różnych podejściach kiedy wysyłam dane bez pomocy JS poprzez:
<form action="php/login.php" method="post">W pliku php mam powrót do strony logowania poprzez:
// Błąd
header("Location: ../index.php");
I Pomyslne logowanie
// Zalogowano
header("Location: ../web.php");
Ale czy tak powinno być ? Nie będzie mi to powodowało żadnego migotania strony ? Kiedy następuje wyświetlenie nowej strony w przeglądarce ?
Czy jeżeli wyświetlam tą samą stronę (powrót do niej w pliku php login.php) z nową zawartością na podstawie zmiennych session to następuje CAŁE pobranie strony ?
Jest sens się w takie coś bawić czy może zainteresować się AJAX'em ? I Z JS'a zrobić przejście do nowej strony po zalogowaniu ?

Ne jest bezsensownym podejściem podejściem pobieranie nawet poprzedniej zawartości div'a przy pomocy AJAX'a po np. po rejestracji ?

Co jeżeli na stronie w div'ie mam obrazek, i za pomocą AJAX'a pobiorę nową zawartość jakiegoś div'a w którym będzie identyczny obrazek to zostanie on wczytany z pamięci przeglądarki czy pobrany na nowo ?
« Ostatnia zmiana: Luty 21, 2017, 14:51:24 wysłana przez LizarD »

Offline lethern

  • Użytkownik

# Luty 21, 2017, 14:53:18
Cytuj
(...)zrobić przejście do nowej strony po zalogowaniu (...)
Nie widzę żadnej różnicy między opisanymi przypadkami lub czegoś nie rozumiem. (nowa strona z serwera vs przechodzenie do nowej strony w JS) - w obu będziesz renderował stronę po stronie serwera, wysyłał ją do klienta, tak? Jest jeszcze inny sposób, ale wydaje mi sie, że o nim teraz nie piszesz - jest to tzw. SPA (single page application), czyli jedna strona na której javascript renderuje wszystko co użytkownik może zobaczyć (wszystkie formatki)

Wracając do Twojej obawy o pobieranie (całej) strony, tak się zawsze robiło i jest to w porządku, szczególnie jeśli Twoja strona nie jest zbyt duża

Czy pomysł z "podmianą strony po zalogowaniu poprzez AJAX" jest zły? Troche tak, bo zysków z tego dużych nie masz, natomiast musiałbyś rograbić swój kod (renderowanie w PHP połączyć z sklejaniem w JS), wydaje się że w tym przypadku dużo walki o nic (piszę to z perspektywy "strona pisana przez początkującego", jednak nie używanie ajaxa może być widziane jako "stare", obecnie można odnieść wrażenie, że dąży się do robienia jak najwięcej ajaxem)

Sens użycia ajaxa jest, jak możesz podejrzewać, możliwość dynamicznego ładowania danych, dynamicznego renderowania. Dajmy na to, dajesz przycisk "wyświetl profil". Po kliknięciu możesz albo załadować nową, wyrenderowaną stronę i zastąpić poprzednią, albo użyć ajaxa, pobrać dane i je wyrenderować w miejsu (np. w popup). Oba obejścia są dobre i zależą od tego jakie były wymagania, jeśli kliknięcie w profil miało przenieść na stronę profilu, to tak to trzeba zrobić, jeśli natomiast miało wyświetlić małe okienko z informacją, to należałoby to zrobić ajaxem

Pobieranie obrazków powinno być cache'owane, jeśli już to zależy to od ustawień (np. strony, serwera) (możesz podejrzeć jak plik jest pobierany w narzędziach developerskich przeglądarki - F12 -> sieć)

note: W Asp.net (i analogicznie w nowszym, asp MVC) używa się do tego UpdatePanel - mechanizm, pod którym kryje się właśnie renderowanie części strony, wysyłanie jej ajaxem i podmienianiu jednego diva zamiast całej strony, dzięki czemu część strony (wspomniany UpdatePanel) się zmienia bez odświeżania formatki
« Ostatnia zmiana: Luty 21, 2017, 15:18:27 wysłana przez lethern »

Offline LizarD

  • Użytkownik

# Luty 21, 2017, 15:12:57
Strona logowania:
Formularze logowania, rejestracji, po co jest ta strona, kontakt <- to mam w menu i chyba kombinuje pod górę jak zrobić przejścia pomiędzy tymi podstronami... Myślałem żeby nie przeładowywać wszystkiego tylko poprzez AJAX/jQuery zmieniać zawartość jednego div'a. Druga strona to zawartość i tutaj chodzi mi o przejście pomiędzy stronami bo jeżeli sprawdzam dane formularzy za pomocą JS to może logowanie załatwić za pomocą AJAX'a.

Na stronie logowania stały jest pasek nawigacyjny zmienia się tylko treść więc pomyślałem że przekazując odpowiedni parametr metodą get będę wyświetlał odpowiednią zawartość strony. Ale po załadowaniu strony chcę mieć ładny efekt przejścia w pasku nawigacyjnym więc chyba pozostaje mi przeładowanie tylko zawartości jednego div'a

Offline Rakieta

  • Użytkownik

# Luty 21, 2017, 15:22:50
Możesz zablokować "odświeżanie" strony, to całkiem powszechne, zwłaszcza w profejsonalnych aplikacjach web. Co nie zmienia faktu, że w tle i tak będzie to przekierowanie, po prostu nie tak widoczne dla oka. Poszukaj sobie sam w google, to chyba zaledwie kilka linijek w JS.

Znając życie kombinacje niedośwadczonego developera z AJAX skończą się tragicznie dla jego strony. Czegoś nie zabezpieczysz i hakerzy będą sobie cicho czekać na okazję by to w jakiś sposób wykorzystać. Warsztat też się "odświeża" po dodaniu wpisu, logowaniu, albo kliknięciu w menu. Czy tak Ci to przeszkadza? :) Lepiej zadbaj o to by serwer był w porządku i nie opóźniał wymiany informacji. Zabawy z AJAX zostaw sobie na później, kiedy już wszystko będziesz ogarniał.

Offline LizarD

  • Użytkownik

# Luty 21, 2017, 15:32:50
Możesz zablokować "odświeżanie" strony, to całkiem powszechne, zwłaszcza w profejsonalnych aplikacjach web. Co nie zmienia faktu, że w tle i tak będzie to przekierowanie, po prostu nie tak widoczne dla oka. Poszukaj sobie sam w google, to chyba zaledwie kilka linijek w JS.
Mógłbyś rozwinąć ?