Невозможно отобразить текст ошибки в div после успешного ajax - PullRequest
0 голосов
/ 17 сентября 2018

В моем приложении я хочу сделать страницу входа. Я хочу сделать это, используя 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 голосов
/ 17 сентября 2018

Посмотрите, что делает этот код:

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

да, он перенаправляет страницу на login.html, затем, во время загрузки страницы, выдает сообщение об ошибке, затем загрузка страницы завершается, и на исходной странице входа в систему сообщение об ошибке пустое.

Удалите строку:

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

при условии, что вы уже зарегистрированы в login.html.

0 голосов
/ 17 сентября 2018

Если <div id="error"> имеет стиль display:none;, его содержимое не будет отображаться. Внутри обратного вызова ajax success, $("#error").html("Invalis Email/Password"); должно быть $("#error").html("Invalis Email/Password").show(); для установки display:block;. См. .show () .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...