Ajax成功后无法在div中显示错误文本

时间:2018-09-17 13:45:49

标签: php jquery html ajax

在我的应用中,我想创建一个登录页面。我想使用ajax jquery进行此登录。如果登录成功,它将导航到下一页或在div中显示错误消息。 这是我的代码

<form role="form">
    <div class="form-group radio-inline">
        <label><b>I Am</b></label> &nbsp; &nbsp; &nbsp; &nbsp;
        <input type="radio" name="category" value="s"> &nbsp;Student &nbsp;
        <input type="radio" name="category" value="t"> &nbsp;Teacher &nbsp;
        <input type="radio" name="category" value="p"> &nbsp;Parent
    </div>
    <div class="form-group">
        <input type="email" class="form-control" id="email" name="email" placeholder="Enter email address">
    </div>
    <div class="form-group">
        <input type="password" class="form-control" id="password" name="password" placeholder="Enter password">
    </div>
    <button type="submit" class="btn btn-primary btn-block">Sign in</button>
</form>
<div id="error">

</div>
  

jquery

$(document).on('click','.btn',function() {

    var email = $("#email").val();
    var password = $("#password").val();
    var category = $("input[name=category]:checked").val();

    $.ajax({
        url: "../logincheck.php",
        type: "POST",
        data: {category:category,email:email,password:password},
        success:function(data) {
            if (data==='studentlogin') {
                window.location.href = '../student/index.php';
            }
            if(data==='teacherlogin'){
                window.location.href = '../teacher/index.php';
            }
            if(data==='teachersubject') {
                window.location.href = '../teacher/subjectadd.php';
            }
            else {
                window.location.href = 'login.html';
                $("#error").html("Invalis Email/Password");
            }
        }
    });
});
  

logincheck.php

$category=$_POST['category'];
$email=$_POST['email'];
$pwd=$_POST['password'];


if ($category == 's') {
    $result=mysqli_query($conn,"SELECT studentid,studentfname FROM studentinfo WHERE emailid='$email' and pwd='$pwd'");

    $res=mysqli_fetch_array($result);

    if($res[0]>0){
        $_SESSION['snstudentid']=$res[0] ;
        $_SESSION['snstudentfname']=$res[1] ;

        echo "studentlogin";
        //header("location:student/index.php");
        exit();
    }   
    else{
        echo "error";
        //header("location:pages/login.html");
    }
} elseif ($category == 't') {
    $result=mysqli_query($conn,"SELECT teacherid,teacherfname FROM teacherinfo WHERE emailid='$email' and pwd='$pwd'");

    $res=mysqli_fetch_array($result);

    if($res[0]>0){
        $check_subject = mysqli_query($conn, "SELECT count(teachersubjectid) FROM teachersubject WHERE teacherid='$res[0]'");
        $subject_result = mysqli_fetch_array($check_subject);

        if ($subject_result[0]>0) {
            $_SESSION['snteacherid']=$res[0];
            $_SESSION['snteacherfname']=$res[1];

            echo "teacherlogin";
            //header("location:teacher/index.php");
            exit();
        } else {
            $_SESSION['snteacherid']=$res[0];
            $_SESSION['snteacherfname']=$res[1];

            echo "teachersubject";
            //header("location:teacher/subjectadd.php");
            exit();
        }
    }   else{
        echo "error";
        //header("location:pages/login.html");
    }
}

该错误消息显示几秒钟然后消失。我执行该错误类样式显示:无; 我该怎么办?请帮助我。

2 个答案:

答案 0 :(得分:0)

如果<div id="error">的样式为display:none;,则不会显示其内容。在ajax成功回调中,$("#error").html("Invalis Email/Password");必须设置为$("#error").html("Invalis Email/Password").show();才能设置display:block;。参见.show()

答案 1 :(得分:0)

看看这段代码的作用:

else {
    window.location.href = 'login.html';
    $("#error").html("Invalis Email/Password");
}

是,它将页面重定向到login.html,然后在页面加载时显示错误消息,然后然后完成页面加载,并且在您的初始登录页面中,错误消息为空。

删除行:

window.location.href = 'login.html';

假设您已经在login.html上。