返回带有 if-else 的 ajax 作为响应



我正在使用ajax函数来返回不同类型的登录值。我试图避免三种问题:

1 - 如果用户的登录错误

2 - 如果用户的 SN 错误

3 - 如果用户的密码错误

在我的 php 文件中,我搜索数据是否存在,如果不存在,我将向未找到的错误发送一种错误:

  $connect = new database();    
   $info = mysql_query("SELECT * FROM myinfo WHERE myinfo.user_login = '$login_user'");
    if (mysql_num_rows($info) == 0) { 
        echo 'error_login'; 
    }
    $info2 = mysql_query("SELECT * FROM myinfo WHERE myinfo.user_sn = '$sn_user'");
    if (mysql_num_rows($info2) == 0) { 
        echo 'error_sn'; 
    }
    $info3 = mysql_query("SELECT * FROM myinfo WHERE myinfo.user_pw = '$user_pw'");
    if (mysql_num_rows($info3) == 0) { 
        echo 'error_pw'; 
    }

我的 ajax 可能会收到三种不同的响应:

      $.ajax({
                url:  "includes/enter.php",
                data: { 
                    login_user: $("#login").val(),
                    sn_user: $("#sn").val(),
                    user_pw: $("#pw").val()
                    },
                    success:function(response)
                    {  
                        if(response == "error_login")
                        {
                            alert("Invalid login!");
                        }
                        else if(response == "error_sn")
                        {
                            alert("Invalid SN!");
                        }
                        else if(response == "error_pw")
                        {
                            alert("Invalid password!");
                        }
                        else
                        {
                            alert("Success!");
                        }
                    }
            }); 

正如 Cpt.Kangar00 所说,我使用了"=="(并且已经编辑过(。我的主要问题是我不想使用echo而不是echo json_encode("error")

您需要使用 POST 或 GET 来发送数据,例如:

$(document).ready(function() {
    $.ajax({
        type: 'POST',
        url:  "data.php",
        data: { 
            user_login: $("#user_login").val(),
            user_sn: $("#user_sn").val(),
            user_pw: $("#user_pw").val(),
        },
        success:function(response)
        {  
            if(response == "error_login")
            {
                alert("Invalid login!");
            }
            else if(response == "error_sn")
            {
                alert("Invalid SN!");
            }
            else if(response == "error_pw")
            {
                alert("Invalid password!");
            }
            else
            {
                alert("Success!");
            }
        }
    });
});

然后像这样访问 PHP 中的数据:

$user_login = $_POST['user_login'];
$user_sn = $_POST['user_sn'];
$user_pw = $_POST['user_pw'];
$dbh = new PDO('mysql:host=localhost;dbname=stackoverflow', 'root', '');
$query = $dbh->prepare("SELECT * FROM myinfo WHERE user_login = :user_login");
$query->bindParam(':user_login', $user_login);
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
if(!$result) {
    echo json_encode('error_login');
    return;
}
$query = $dbh->prepare("SELECT * FROM myinfo WHERE user_sn = :user_sn");
$query->bindParam(':user_sn', $user_sn);
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
if(!$result) {
    echo json_encode('error_sn');
    return;
}
$query = $dbh->prepare("SELECT * FROM myinfo WHERE user_pw = :user_pw");
$query->bindParam(':user_pw', $user_pw);
$query->execute();
$result = $query->fetchAll(PDO::FETCH_ASSOC);
if(!$result) {
    echo json_encode('error_sn');
    return;
}

预准备语句是运行数据库查询的一种更安全、更高效的方法。这是一个示例脚本,需要清理,但应该作为您的良好起点。您可以在此处阅读有关PDO和准备好的声明的更多信息 http://php.net/manual/en/pdo.prepare.php。

在应该使用"=="的地方使用"="。

        $.ajax({
            url:  "includes/enter.php",
            data: { 
                login_user: $("#login").val(),
                sn_user: $("#sn").val(),
                user_pw: $("#pw").val()
                },
                success:function(response)
                {  
                    if(response == "error_login")
                    {
                        alert("Invalid login!");
                    }
                    else if(response == "error_sn")
                    {
                        alert("Invalid SN!");
                    }
                    else if(response == "error_pw")
                    {
                        alert("Invalid password!");
                    }
                    else
                    {
                        alert("Success!");
                    }
                }
        }); 

最新更新