Есть форма
<form id="login_form" method="post">
<label for="username">Имя</label>
<input type="text" name="username" autocomplete="off" required>
<label for="password">Пароль</label>
<input type="password" name="password" autocomplete="off" required>
<button type="submit" name="do_login">Войти</button>
</form>
<div id="er_mes"></div>
Есть скрипт
$(document).ready(function() {
$('#login_form').submit(function(event) {
event.preventDefault();
$.ajax({
type: 'POST',
url: '/core/do_login.php',
data: $(this).serialize(),
success: function(data) {
if (data.error_login) {
$('#er_mes').html(data.error_login);
} else if (data.us3r_id) {
$('#login_form').remove();
$('body').append('<h1>Успех!</h1>');
}
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(jqXHR, textStatus, errorThrown);
}
});
});
});
При нажатии кнопки Войти, код do_login.php выполняется успешно, а условия которые указаны в ajax success - нет. Попробовал добавить error, в консоли тоже ничего не появляется. Пробовал также добавить dataType: 'json' после data - изменений так же никаких. Версию jquery 3.6.4, менял на 2.2.4 и 1.12.4 - ничего не изменилось.
Код do_login.php
require_once __DIR__.'/boot.php';
$stmt = pdo()->prepare("SELECT * FROM `users` WHERE `username` = :username");
$stmt->execute(['username' => $_POST['username']]);
if (!$stmt->rowCount()) {
$error_login = "Пользователь с такими данными не зарегистрирован";
echo json_encode($error_login, JSON_UNESCAPED_UNICODE);
} else {
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if (!password_verify($_POST['password'], $user['password'])) {
if (password_needs_rehash($user['password'], PASSWORD_DEFAULT)) {
$newHash = password_hash($_POST['password'], PASSWORD_DEFAULT);
$stmt = pdo()->prepare('UPDATE `users` SET `password` = :password WHERE `username` = :username');
$stmt->execute(['username' => $_POST['username'],'password' => $newHash]);
if (!password_verify($_POST['password'], $user['password'])) {
$error_login = "Пароль неверен";
echo json_encode($error_login, JSON_UNESCAPED_UNICODE);
} else {
$_SESSION['user_id'] = $user['id'];
$password_rehash = "Пароль обновлён";
$us3r_id = $_SESSION['user_id'];
echo json_encode($us3r_id, JSON_UNESCAPED_UNICODE);
}
} else {
$error_login = "Пароль неверен";
echo json_encode($error_login, JSON_UNESCAPED_UNICODE);
}
} else {
$_SESSION['user_id'] = $user['id'];
$us3r_id = $_SESSION['user_id'];
echo json_encode($us3r_id, JSON_UNESCAPED_UNICODE);
}
}
Подскажите, в чём проблема? Почему не работает ajax?