У меня есть форма входа, в которой я хочу передать данные из нее с помощью Ajax в функцию PHP в другом файле. Это сделано для того, чтобы страница не перезагружалась, когда пользователь входит в систему.
Прямо сейчас ничего не происходит, когда пользователь пытается войти в систему. Похоже, что access.php не обрабатывает данные, отправленные из Ajax.
Может кто-нибудь сказать мне, почему это не работает? Каковы возможные причины?
index.html:
<div class = "login-form">
<form method = "post" action = "index.php">
<input id = "username" type = "text" placeholder = "Username...">
<input id = "password" type = "password" placeholder = "Password...">
<button id = "button" type = "submit">Login</button>
</form>
<script src = "http://code.jquery.com/jquery-3.3.1.min.js" integrity = "sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8 = " crossorigin = "anonymous"></script>
<script type = "text/javascript">
$('#button').click(function(e) {
e.preventDefault();
var username = $('#username').val();
var password = $('#password').val();
$.ajax({
type: 'POST',
url: 'resources/includes/access.php',
data: {
func: 'loginSubmit',
usernamePHP: username,
passwordPHP: password
},
success: function(response) {
$('#result').html(response);
}
});
});
</script>
</div>
access.php:
function loginSubmit(){
require '../dbh.inc.php';
$mailuid = $_POST['usernamePHP'];
$password = $_POST['passwordPHP'];
if (empty($mailuid) || empty($password)){
header("Location: ../../index.php?error=emptyfields");
exit();
}
else{
$sql = "SELECT * FROM users WHERE uidUsers=? OR emailUsers=?;";
$stmt = mysqli_stmt_init($conn);
if (!mysqli_stmt_prepare($stmt, $sql)){
header("Location: ../../index.php?error=sqlerror");
exit();
}
else{
mysqli_stmt_bind_param($stmt, "ss", $mailuid, $password);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
if ($row = mysqli_fetch_assoc($result)){
$pwdcheck = password_verify($password, $row['pwdUsers']);
if ($pwdcheck == false) {
header("Location: ../../index.php");
exit();
}
else if ($pwdcheck == true) {
session_start();
$_SESSION['userId'] = $row['idUsers'];
$_SESSION['userUid'] = $row['uidUsers'];
header("Location: ../../index.php?login=success");
exit();
}
else{
header("Location: ../../index.php");
exit();
}
}
}
}
}
Какую отладку вы сделали? Можете ли вы повторить значения поста? Вы уверены, что эта функция вызывается?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Из того, что я вижу из документация, добавление имени функции в качестве свойства данных, как и вы, не вызывает эту функцию;
data Type: PlainObject or String or Array
Когда вы вызываете access.php, файл просто содержит определение функции, вы на самом деле не вызываете его.
Итак, у вас есть два варианта. Либо вызовите функцию, добавив loginSubmit() после функции (в конце access.php), либо полностью удалите код на access.php из функции.
добавьте конец функции, просто поместите
loginSubmit()за пределы функции