0

我有登录页面。当我输入正确的登录数据时,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'));}


}

谢谢帮助。

4

1 回答 1

-1

Ajax 不知道您想显示错误,对于 ajax 调用,您的“Zalogowano poprawnie”消息和编码的“zly login lub haslo”消息对我来说毫无意义(我不懂你的语言)。如果您想告诉 ajax 这是一个错误,您需要使用不同的 http 响应代码进行响应。只有在有 HTTP 错误响应时才调用“失败”方法。

如果您使用的是 PHP5,

echo json_encode('zly login lub haslo');
http_response_code(404);
exit();

顺便说一句,我不知道您使用 json_encode 的意图。这可能最终无法解决您的问题。但我相信它回答了为什么你没有得到“错误”

或者,您始终可以只返回“ok”或“failed”消息。Ajax 将始终调用“完成”方法。在“完成”方法中,您根据消息触发不同的操作(“确定”或“失败”)

于 2013-06-22T14:35:47.513 回答