Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery] Przeładowanie strony po ajaxie
-lukasamd-
post
Post #1





Goście







Witam,
mam skrypt logowania tradycyjną metodą + do tego nałożone szybkie logowanie po ajaxie w jquery - wszystko działa pięknie tak jak chcę.
Problem w tym, że przypadku szybkiego, ajaxowego logowania wykonuję po odbiorze informacji o poprawnym zalogowaniu coś takiego:

Kod
document.location.href = document.location.href;


W efekcie strona / karta zostają odświeżone.
Co prawda w znacznie bardziej zautomatyzowany sposób, ale jednak nie jest to robione bez przekierowania.

Chciałbym natomiast zwracać całą stronę już po zalogowaniu.
Wiem jak to zrobić, o ile mam gdzie odebrane dane wrzucić np. do jakiegoś diva.

Problem jednak w tym, że takiego diva nie ma.
Samo PHP również nie zwróci mi strony bez nagłówka i stopki, a więc muszę wczytać wszystko.

Próby używania np. document.html() spełzły na niczym.
Jest to w ogóle wykonalne, czy jednak muszę ograniczyć dane przesyłane przez PHP i "upychać je" do konkretnego elementu?
Go to the top of the page
+Quote Post
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Po pierwsze, po co łączyć ajax'a z przeładowaniem strony? Z założenia ajax jest właśnie po to, aby żądania wysyłać asynchronicznie, bez przeładowania strony.

Jeśli jednak, chcesz odświeżyć zawartość całej strony po poprawnym zalogowaniu, to możesz sobie zrobić mniej więcej tak:
* skrypt js po stronie przeglądarki sprawdza logowanie, jeśli poprawne wysyła zapytanie do serwera o treść strony
* treść strony może być wypełnieniem poszczególnych bloków, bądź nawet na upartego cała zawartość bod
* odebrane dane wpisujesz do body zastępując to co w nim jest


--------------------
Go to the top of the page
+Quote Post
sebekzosw
post
Post #3





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


zrób sobie takie coś: wysyłasz info przez ajax dodając dodatkową dane w `data`, np.: "logowanie.php?action=ajax"

i w skrypcie php za pomocą ifów wyświetlasz to co chcesz zmienić

np nie chcesz wyświetlić nagłówka to wygladaloby to tak:
  1. if($_GET['action'] != 'ajax') include 'header.php';


mam nadzieje, ze rozumiesz co chce Ci przekazać ;>
Go to the top of the page
+Quote Post
-lukasamd-
post
Post #4





Goście







No właśnie chcę uniknąć przeładowania smile.gif

Wiem jak ma to działać i mam tak zrobione - skrypt js sprawdza logowanie, otrzymuje obecnie info o statusie (np. error = 0 albo error = 1) i w zależności od nich wyświetla komunikat lub poprzez podany we wcześniejszym poscie kod dokonuje przeładowania.
Problem leży w tym, że skrypt nie za bardzo jest w stanie przesłać tylko zawartości body - jak już, to całość.

@sebekzosw:
Rozumiem, ale w takim wypadku chyba lepsze będzie ponowne przerobienie panelu dla usera i wysłanie tylko jego.

Ten post edytował lukasamd 29.09.2010, 12:00:48
Go to the top of the page
+Quote Post
sebekzosw
post
Post #5





Grupa: Zarejestrowani
Postów: 437
Pomógł: 42
Dołączył: 16.04.2007

Ostrzeżenie: (0%)
-----


możesz zrobić to w inny sposób... po pierwsze odbierać dane JSON z np.: logowanie.php. Pobierać takie dane jak status [0 - nie zalogowano, 1 - zalogowano] i treść a potem w JS odpowiedni warunek - jeżeli zalogowałeś się [status == 1] to zaktualizuj div z panelem, a jeżeli się nie zalogowałeś do z panelem nic nie robisz i wyświetlasz alert(tresc) (gdzie treść do jakiś komunikat) ...
Go to the top of the page
+Quote Post
vokiel
post
Post #6





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Możesz sprawdzać czy żądanie nastąpiło przez ajax'a, i jeśli tak to serwować sam content. Zmiana niezbyt duża.
  1. if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH']== 'XMLHttpRequest'){
  2. // ajax
  3. }


--------------------
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 16:23