Почему мой AJAX-запрос распечатывает весь HTML-код страницы? - PullRequest
1 голос
/ 18 июня 2019

Я пытаюсь сделать запрос AJAX, отправить данные в файл PHP, проверить правильность имени пользователя и пароля, вернуть ответ, а затем запустить файл login.php, который определяет, запускает ли сеанс.

Прямо сейчас мой AJAX-запрос ничего не делает, кроме распечатки всего моего HTML-кода для страницы входа.

Если кто-то знает почему, пожалуйста, дайте мне знать ...
(Я заранее прошу прощения за размещение всех моих login.js и checkLogin.php, я боюсь, что вопрос может быть без ответа без контекста для обоих)

Это login.js

$(function() { //Once the document has fully loaded 

    $("#login_form").submit(function(event) {

        //INITIALIZING VARIABLES
        var userName = $("#userName").val();
        var passWord = $("#passWord").val();
        var error = 0;

        event.preventDefault(); //Prevent normal submit action
        $("#userError, #passError").text(""); //Clear the text each time the user clicks submit

        if (userName == "") { //Checking if the username is blank
            $("#userError").text("Please enter your username");
            error = 1;
        }

        if (passWord == "") { //Checking if the password is blank
            $("#passError").text("Please enter your password");
            error = 1;
        }

        //BEGIN Ajax Request
        var $form = $(this),
            term = $form.find("userName, passWord"),
            url = 'checkLogin.php';

        var posting = $.post(url, {username: userName, password: passWord});

        posting.done(function(data) {
            $("#userError").text(posting.responseText);
        });
        //END Ajax Request

        if (error == 0) {
            $("passError").text("Success");
        }
    }); //END submit button click   

    $("#login_form").submit();

});

Это checkLogin.php

<?php
    $link = mysqli_connect(DB info private); //Database Connection

    if (!$link) { 
        die('Could not connect: ' . mysqli_connect_error()); 
    }

    if ($_SERVER['REQUEST_METHOD'] === 'POST') { //Keeps the text inside the this.responseText
        //Preparing and Binding SQL statement
        $stmt = mysqli_prepare($link, "SELECT username, password FROM login WHERE username =? and password =?");
        mysqli_stmt_bind_param($stmt, "ss", $username, $password);

        //PRINTS UNIDENTIFIED INDEX
        $username = $_POST['username']; //Retrieving the username 
        $password = $_POST['password']; //Retrieving the password
        mysqli_stmt_execute($stmt); //Execute the parameterized prepared statement

        $result = mysqli_stmt_get_result($stmt);
        $row = mysqli_fetch_assoc($result);
    }
?>

Тег формы из client_login.php

<form action="login.php" method="post" name="login_form" id="login_form">
</form>

Ответы [ 2 ]

1 голос
/ 18 июня 2019

Здесь есть несколько проблем

  1. url = checkLogin.php; должно быть url = 'checkLogin.php';

    В настоящее время URL будет undefined, а URL-адрес ajax отправит все в yoursite.com/undefined и сервер вернет 404 с 404 страницей по умолчанию.Вот почему вы видите html в своем ответе.

  2. Ваш checkLogin.php должен вернуть некоторые данные клиенту.Используйте echo() для этого.

1 голос
/ 18 июня 2019

Вы ничего не возвращаете на checkLogin.php. Вам следует попробовать:

$row = mysqli_fetch_assoc($result);
if($row) {
    echo "User found!";
    exit();
}

Я бы порекомендовал вам вернуть текст в формате json. Таким образом, вы можете возвращать более сложные ответы для использования в вашем js-скрипте. Например, в вашем checkLogin.php:

$row = mysqli_fetch_assoc($result);
if($row) {
    echo json_encode([
        'code' => '1', // code that represent successful
        'message' => 'User found!'
    ]);
    exit();
}

И в вашем login.js:

posting.done(function(data) {
    var response = JSON.parse(data);
    if(response.code == '1') {
        $("#userError").text(response.message);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...