![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 256 Pomógł: 16 Dołączył: 21.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam, borykam się z problemem z logowaniem Jquery/Ajax metodą POST.
Formularz logowania Kod Ajax Kod <script type="text/javascript"> function do_login() { var nick=$("#nick").val(); var pass=$("#pass").val(); if(nick!="" && pass!="") { $("#loading_spinner").css({"display":"block"}); $.ajax ({ type:'POST', url:'http://localhost/nowywyglad/news/app-request/login.php', data:{ nick:nick, haslo:pass }, success:function(response) { if(response=="success") { window.location.href="http://localhost/nowywyglad/news/app-layout/main.php"; } else { $("#loading_spinner").css({"display":"none"}); alert("błąd logowania"); return false; } } }); } else { $("#wrapper").html("Proszę uzupełnić pole"); } return false; } </script> Do rzeczy! Po pierwsze gdy pozostawię pola pustę to przeładowuje się strona (a dokładniej to gdy wchodzę w strukturę html i nie widzę nic w sekcji head w body jest tylko div z ID=wrapper). (IMG:https://iv.pl/images/03397214347212727908.png) (IMG:https://iv.pl/images/80041867093495681826.png) Po drugie gdy wpiszę poprawne dane do logowania to wyświetla się komunikat z błędem (alert) gdzie normalnie powinno przekierować mnie na stronę http://localhost/nowywyglad/news/app-layout/main.php (gdy nie jestem zalogowany to przekieruje mnie na stronę główną czyli localhost/nowywyglad/news/index.php) Jak rozwiązać problem. Ten post edytował jaca121212 13.05.2019, 12:16:44 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
1. Skoro wstawiasz taki HTML do id="wrapper" przy niewypełnionych polach, to czemu się dziwisz?
2. Sprawdź co zwraca wywołanie login.php, bo obstawiam, że nie string "success". |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 256 Pomógł: 16 Dołączył: 21.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
Jeśli chodzi o punkt 1 to pomogło wyciągniecie tego formularza nad diva wrapper.
Jeśli chodzi o punkt 2 to w pliku login php jest sprawdzane czy pole nick oraz pass czy nie są pustę jeśli nie to wtedy zostaje zapytanie wysłane do bazy o sprawdzenie usera czy jest taki w bazie czy poprawne podaje nick oraz hasło jeśli tak to jest sesja przekazywana do pliku success i on dopiero przekierowuje na właściwą stronę. (IMG:https://iv.pl/images/99220180269463901409.png) (jeżeli o to chodziło) |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Plik login.php ma zwrócić string "success" w przypadku poprawnego zalogowania. Tylko i wyłącznie ten string.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 256 Pomógł: 16 Dołączył: 21.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
Jak to sprawdzić?
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Tam gdzie wstawiłeś zdjęcie, klikasz 4 zakładkę odpowiedź. Ale źle się do tego zabierasz trochę. Już pomijam że jakieś stare jquery (success zostało usunięte na rzecz jednolitych promise) to poczytaj https://prophp.pl/advice/show/17/jak_przygo...dan_xhr_json%3F
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 256 Pomógł: 16 Dołączył: 21.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
Wygląda to tak
(IMG:https://iv.pl/images/30168344772251560944.png) |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 380 Pomógł: 1116 Dołączył: 30.08.2006 Ostrzeżenie: (0%) ![]() ![]() |
Jak widzisz zwracasz calutką stronę logowania a nie konkretną odpowiedź.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 256 Pomógł: 16 Dołączył: 21.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
Zmieniłem w ten sposób
Kod <script> $(function() { $('#login').on('submit', function(event) { event.preventDefault(); var nick=$("#nick").val(); var pass=$("#pass").val(); if(nick!="" && pass!="") { $("#loading_spinner").css({"display":"block"}); $.ajax({ url: "http://localhost/nowywyglad/news/app-request/login.php", method: "POST", data:{ nick:nick, haslo:pass } }) .done(function(data, textStatus, jqXHR) { window.location.href="http://localhost/nowywyglad/news/app-layout/main.php"; }) .fail(function(jqXHR, textStatus, errorThrown) { $('#wrapper').text("błąd logowania"); $("#loading_spinner").css({"display":"none"}); return false; }); }else { $("#wrapper").text("Proszę uzupełnić pole"); return false; } }); }); </script> i jest problem bo jeśli wpiszę nie poprawne hasło czy nick to zamiast wyświetlić tekst to przeładowuje stronę oraz gdy jak wpiszę hasło i login poprawne to także przeładowuje stronę i przekierowuje mnie na wskazany adres .done(); ale mam wrażenie że nie jest to wysyłane metodą POST tylko GET (IMG:https://iv.pl/images/34666093928633865504.png) Ktoś pomoże w rozwiązaniu problemu. Ten post edytował jaca121212 13.05.2019, 12:15:45 |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Czy naprawde kazdy KOD musisz wkladac w tag MANUAL? Jaki to ma sens? Do kodu masz tag np. CODE albo PHP dla kodu php
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 256 Pomógł: 16 Dołączył: 21.12.2014 Ostrzeżenie: (0%) ![]() ![]() |
Czy naprawde kazdy KOD musisz wkladac w tag MANUAL? Jaki to ma sens? Do kodu masz tag np. CODE albo PHP dla kodu php Już poprawiam Ostatecznie zrobiłem w ten sposób
A tak na marginesie można przechwycić sesssion z komunikatem o błędzie np tak Kod <script>
..... .fail(function() { $("#wrapper").text("[b]Tutaj umieścić komunikat przechwycony z session o błędzie[/b]"); }) ..... </script> |
|
|
![]() ![]() |
![]() |
Aktualny czas: 24.08.2025 - 08:44 |