[AJAX][JavaScript][PHP]Przekierowanie strony |
[AJAX][JavaScript][PHP]Przekierowanie strony |
12.05.2019, 21:24:28
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). 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 |
|
|
12.05.2019, 22:31:17
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 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". -------------------- |
|
|
12.05.2019, 22:44:33
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ę. (jeżeli o to chodziło) |
|
|
13.05.2019, 07:05:05
Post
#4
|
|
Grupa: Zarejestrowani Postów: 6 761 Pomógł: 1822 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.
-------------------- |
|
|
13.05.2019, 09:41:47
Post
#5
|
|
Grupa: Zarejestrowani Postów: 256 Pomógł: 16 Dołączył: 21.12.2014 Ostrzeżenie: (0%) |
Jak to sprawdzić?
|
|
|
13.05.2019, 09:45:11
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 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
-------------------- |
|
|
13.05.2019, 10:28:19
Post
#7
|
|
Grupa: Zarejestrowani Postów: 256 Pomógł: 16 Dołączył: 21.12.2014 Ostrzeżenie: (0%) |
Wygląda to tak
|
|
|
13.05.2019, 10:43:24
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 365 Pomógł: 1114 Dołączył: 30.08.2006 Ostrzeżenie: (0%) |
Jak widzisz zwracasz calutką stronę logowania a nie konkretną odpowiedź.
-------------------- |
|
|
13.05.2019, 11:59:36
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 Ktoś pomoże w rozwiązaniu problemu. Ten post edytował jaca121212 13.05.2019, 12:15:45 |
|
|
13.05.2019, 12:02:27
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 455 Pomógł: 6292 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
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
13.05.2019, 21:17:47
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> |
|
|
Wersja Lo-Fi | Aktualny czas: 25.04.2024 - 17:15 |