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

时间:2017-05-15 16:57:36

标签: javascript php ajax response

我正在使用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")

2 个答案:

答案 0 :(得分:1)

您需要使用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

答案 1 :(得分:0)

你使用“=”,你应该使用“==”。

        $.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!");
                    }

                }
        });