Ivanowski
2.12.2014, 20:51:44
Witam. Chciałem utworzyć logowanie za pomocą AJAX, lecz nie wiem w czym blad
strona html+js:
<form method="POST" action="java script:true"> <div class="box-form"> Login:
<input type="text" name="login" placeholder="Login" id="login_field" /> </div> <div class="box-form"> Hasło:
<input type="password" name="password" placeholder="Hasło" id="password_field"/> </div> $( "#btn-login" ).click(function(){
$.ajax({
type : "POST",
url : "login.php",
data : {
login : $("#login_field").val(),
password : $("#password_field").val()
},
success : function(msg) {
$("#komunikat-zone").innerHTML = msg;
}
});
});
login.php:
<?
$login = $_POST["login"];
$password = $_POST["password"];
$baza = new mysqli('','','','');
$selectLogin = $baza->query('SELECT login FROM admins WHERE login="'.$login.'"');
$wynik = mysqli_fetch_array($selectLogin);
if($wynik[0] == $login) {
$selectPassword = $baza->query('SELECT password FROM admins WHERE login="'.$login.'"');
$wynik = mysqli_fetch_array($selectPassword);
if($wynik[0] == $password) {
}else{echo 'Nieprawidłowy login lub hasło!';} }else{echo 'Nieprawidłowy login lub hasło!';} }else{echo 'Uzupełnij pola!';} }else{echo 'Uzupełnij pola!';} ?>
Sam kod PHP działa.
Turson
2.12.2014, 20:59:50
Ivanowski
2.12.2014, 21:09:53
"Uncaught ReferenceError: $ is not defined"
Ale mam biblioteke JQuery:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
i próbowałem też z pliku.
A gdy dodam:
$('#box').hide();
działa.
Ten błąd był nie ze skryptu z AJAX'em więc dalej nie wiem o co chodzi
Turson
2.12.2014, 21:53:52
Masz wczesniej podlaczone jQUery zanim wywolujesz skrypt?
Ivanowski
2.12.2014, 22:19:27
Tak mam:
Header -> Jquery
Form
Script AJAX
Turson
2.12.2014, 22:27:39
Nie masz tam jeszcze innym bibliotekek js? Mogą one się gryźć z jQuery.
Daj link do demo jak masz
Ivanowski
2.12.2014, 22:55:37
Nie mam żadnych innych script / bibliotek
Turson
3.12.2014, 07:39:19
Przede wszystkim akcja onclick na przycisku/linku powinna mieć
Kod
return false;
na końcu skryptu. Zapobiega to wysyłaniu się automatycznym formularza jak jest to teraz.
Ivanowski
3.12.2014, 15:04:38
Nadal nie działa. Ale czy gdy w formie podamy action="java script:true" to już return false jest automatycznie "zrobione" ? Próbowałem obejrzeć filmiki róznych osób i mają tylko java script:true i napisane prawie tak samo kod jquery jak ja.
viking
3.12.2014, 15:16:24
Skoro masz wszedzie jquery to po co jakieś returny. jest preventDefault(). Na stronie którą podałeś brakuje plików.
Ivanowski
3.12.2014, 15:38:13
Plików Jquery? Jakich ?
juz wiem. ale tam nic nie bylo z AJAXem itp. Usunąłem i dalej nie działa
viking
3.12.2014, 15:51:47
Odpowiedź jest zwracana. Wstaw jeszcze dataType na html. I script masz poza body.
trueblue
3.12.2014, 15:54:00
Obsługując obiekt jQuery używaj metody html(), obiekt jQuery nie ma właściwości innerHTML.
Ivanowski
3.12.2014, 16:03:41
Wiem o tym, sprawdzałem czy może to zadziała
trueblue
3.12.2014, 16:12:08
Sprawdź jaki obecnie argument przekazujesz do metody html().
Ivanowski
3.12.2014, 16:13:33
Jak mam to zrobić?
trueblue
3.12.2014, 16:31:57
Zamiast .html() wstawić .html(msg).
Przecież chcesz ustawić treść komunikatu, który jest w zmiennej msg...
Ivanowski
3.12.2014, 16:34:20
Faktycznie... zapomnialem dopisać

I nic...
trueblue
3.12.2014, 16:42:40
$("#komunikat-zone").html(msg
Staraj się wyszukiwać literówki zanim umieścisz post.
Ivanowski
3.12.2014, 16:45:50
Też akurat zauważyłem. Wcześniej miałem tak samo i nie działało. A literówka pojawiła się po zmianie kodu. Popatrz na pierwszy post. Dziękuje za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.