php - 来自 Ajax 和 php 的错误响应

标签 php html json ajax

你好,我不知道我在这里做错了什么。我正在尝试将 ajax 用于登录页面。 ajax 正在工作,但成功的响应不是来 self 指定的文件。我需要它来读取来自 login_validate.php 的响应,但我收到来自 dbconnect.php 的响应,它不应该那样工作。

这是ajax页面的index.php

jQuery(document).ready(function(){
 jQuery(".login").submit(function(e){
    e.preventDefault();
    var formData = jQuery(this).serialize();
    $.ajax({
        type:"POST",
        url:"login_validate.php",
        data:formData,
        success: function(response){
            /** alert (response);
         }, error: function(jqXHR, textStatus, errorThrown){
                alert('error');
         } **/       
            if(response == "True")
            {
                //alert('Yes');
                //$.jGrowl("Loading File Please Wait......", { sticky: true });
                $.jGrowl("Welcome... Redirecting", { header: 'Login Successful' });
                var delay = 3000;
                setTimeout((function(){ window.location = 'welcome.php'  }), delay);

            }else{
                //alert('No');
                $.jGrowl("Invalid Login Details", { header: 'Access Denied' });
            }
        }
    });
    return false;
});

});                         

这是dbconnect.php

<?php
// connect to database
$hostname = "localhost";
$username = "root";
$password = "";
$dbname = "cbt2";


 $conn = new mysqli($hostname, $username, $password, $dbname);
 // check connection
 if ($conn->connect_error) {
    die ('Error connecting to database' . $conn->connect_error);
 } else {
    echo "Connection Successful";
 }
 ?> 

这是login_validate.php

<?php
require 'admin/dbconnect.php';
require 'admin/core.php';

if(loggedin())
{
    header('location:welcome.php');
}
if (isset($_POST['loginbtn'])){
    $name=$_POST['username'];
    $pass= $_POST['password'];

    $qry="SELECT * FROM student WHERE username='$name' AND password='$pass' LIMIT 1";
    $qrycheck=$conn->query($qry);
    if ($qrycheck->num_rows > 0){
        while($fetch = $qrycheck->fetch_assoc()){
            $class=$fetch['class'];
            $fullname=$fetch['fullname'];
            $username=$fetch['username'];
            $dept=$fetch['dept'];
            $id=$fetch['id'];

            $_SESSION['stdid']=$id;
            $_SESSION['user']=$username;
            $_SESSION['name']=$fullname;
            $_SESSION['class']=$class;
            $_SESSION['dept']=$dept;

        }
        echo "True";
    } else {
        echo "False";
    }
}
?>

所以我得到的成功响应是 echo 'Connection Successful' 它应该是 echo 'True'

最佳答案

dbconnect.php 中删除您的 else 语句

<?php
// connect to database
$hostname = "localhost";
$username = "root";
$password = "";
$dbname = "cbt2";




$conn = new mysqli($hostname, $username, $password, $dbname);
 // check connection
 if ($conn->connect_error) {
    die ('Error connecting to database' . $conn->connect_error);
 } 
 ?>

当连接成功时,您的 dbconnect.php 回显“连接成功”,这是由 ajax 首先读取的,这不是您在等什么。当连接到数据库成功时,甚至不建议每次都回显或记录。

更新:

同时更新您的login_validate.php:

<?php
require 'admin/dbconnect.php';
require 'admin/core.php';


if (isset($_POST['username'], $_POST['password'])){
    $name=$_POST['username'];
    $pass= $_POST['password'];

    $qry="SELECT * FROM student WHERE username='$name' AND password='$pass' LIMIT 1";
    $qrycheck=$conn->query($qry);
    if ($qrycheck->num_rows > 0){
        while($fetch = $qrycheck->fetch_assoc()){
            $class=$fetch['class'];
            $fullname=$fetch['fullname'];
            $username=$fetch['username'];
            $dept=$fetch['dept'];
            $id=$fetch['id'];

            $_SESSION['stdid']=$id;
            $_SESSION['user']=$username;
            $_SESSION['name']=$fullname;
            $_SESSION['class']=$class;
            $_SESSION['dept']=$dept;

        }
        echo "True";
    } else {
        echo "False";
    }
}
?>

当你从 ajax 调用 php 文件时,你不需要重定向到某个地方,它应该只是返回一些东西。此外,我认为检查是否设置了 $_POST['loginbtn'] 是多余的。

关于php - 来自 Ajax 和 php 的错误响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51266942/

相关文章:

html - 并排放置2个div

html - Adsense 广告导致边栏在 flex 布局中离开屏幕

c# - 如何使JSON.NET忽略对象关系?

python - 在 Pandas 中将嵌套 JSON 数据作为数据帧访问

php - 2个大型MySQL数据库表的比较时间

php - 使用 REST 代理 (PHP) 检查 Azure 队列是否存在

php - HTML POST 上的 htmlspecialchar 到带有数组和单个输入的 PHP 脚本

PHP - 检查是否设置了任何 GET 数据

php - 在表中打印 mysql 查询的结果

json - 使用 Mongoose/NodeJS 修改具有多个键的嵌套对象,而不替换现有键