我有登录页面。当我输入正确的登录数据ajax工作。但是当我输入错误的登录或密码脚本没有返回错误。我如何解决这个问题,我在哪里犯了错误的代码? Ajax脚本
function getdetails()
{
var name = $('#user').val();
var haslo = $('#pass').val();
var request=$.ajax
({
type: "POST",
url: "login.php?id=0",
data: {login:name, pass:haslo}
});
request.fail(function() {
alert("test");
});
request.done(function() {
$('#logowanie').load('index.php #logowanie');
});
};
表格代码
function logowanie()
{
if(isset($_SESSION["login"]) && $_SESSION["login"]!==0)
{
echo '<div id="logowanie"> Witaj '.$_SESSION['nick'].' na forum';
echo '<br/><a href="login.php?off=1">Wyloguj</a><br/>';
if($_SESSION['power']>0)
{echo '<a href="panel.php">Panel Admina</a>';}
echo '</div>';
}
else
{
$_SESSION["login"]=0;
$_SESSION['power']=0;
?>
<div id="logowanie">
<font color="red"><B> Login</B></font><input type="text" name="user" size="8" id="user"><br/>
<B><font color="red">Hasło</font></B><input type="password" name="pass" size="8" id="pass"><br/>
<input type="submit" value="Zaloguj" name="przycisk" onClick ="getdetails()">Jeżeli nie posiadasz jeszcze konta <a href="login.php?id=1">zarejestruj się </a></div>'<?php
}
}
表格检查
function werfikuj(){
$login=$_POST['login'];
$haslo=$_POST['pass'];
$zapytanie= 'Select * from users where login="'.$login.'" and haslo="'.md5($haslo).'"';
$result = $this->db->query($zapytanie);
if($result->num_rows==1) { echo "Zalogowano poprawnie";$row = $result->fetch_assoc(); $_SESSION['login']=$row['id']; $_SESSION['nick']=$row['login']; $_SESSION['power']=$row['power'];}
else { die(json_encode('zly login lub haslo'));}
}
请求帮助。
答案 0 :(得分:-1)
Ajax不知道你想要显示错误,对于ajax调用,你的“Zalogowano poprawnie”消息和编码的'zly login lub haslo'消息对我来说毫无意义(我不知道你的语言)。如果你想告诉ajax这是一个错误,你需要使用不同的http响应代码进行响应。只有在出现HTTP错误响应时才会调用'failed'方法。
如果您使用的是PHP5,
echo json_encode('zly login lub haslo');
http_response_code(404);
exit();
顺便说一下,我不知道你使用json_encode的意图。这可能不会最终解决您的问题。但我相信它解决了为什么你没有得到'错误'
或者,您可以随时返回“确定”或“失败”消息。 Ajax将始终调用'done'方法。在“完成”方法中,您根据消息(“确定”或“失败”)
触发不同的操作