При передачи данных php через ajax не выводит проверку на ошибки
При передачи данных php через ajax не выводит проверку на ошибки,если поля ввода не заполнены.Просто ичего не происходит при нажатии на кнопку регистрации.Пробовал делать проверку через isset,не помогло.Без использования ajax,работает корректно. Прошу прощения,если код кого-то смутит,я только учусь этим заниматься.Спасибо! Форма регистрации
<form action="" method="post">
<label for="username">Ваше имя</label>
<input type="text" name="username" id="username" class="form-control">
<label for="email">Email</label>
<input type="email" name="email" id="email" class="form-control">
<label for="login">Логин</label>
<input type="text" name="login" id="login" class="form-control">
<label for="pass">Пароль</label>
<input type="password" name="pass" id="pass" class="form-control">
<div class="alert alert-danger mt-2" id="block"></div>
<button type="button" class="btn btn-success mt-5">
Зарегистрироваться
</button>
</div>
<?php require 'blocks/aside.php'; ?>
</main>
<?php require 'blocks/footer.php'; ?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
// передаем данные через аякс по ид форм
$('#reg_user').click(function (){
var name = $('#username').val();
var name = $('#email').val();
var name = $('#login').val();
var name = $('#pass').val();
$.ajax({
url:'reg/registr.php',
type:'POST',
data:{'username':name,'email':email,'login':login,'pass':pass},
success: function(data=='Готово'){
$('#reg_user').text('Все готово');
$('#block').hide();
else {
$('#block').show();
$('#block').text(data);
}
}
});
});
Здесь сама обработка
<?
$username = trim(filter_var($_POST['username'], FILTER_SANITIZE_STRING));
$email = trim(filter_var($_POST['email'], FILTER_SANITIZE_EMAIL));
$login = trim(filter_var($_POST['login'], FILTER_SANITIZE_STRING));
$pass = trim(filter_var($_POST['pass'], FILTER_SANITIZE_STRING));
$error = '';
if (strlen( $username ) <= 3)
$error = 'Введите имя';
elseif (strlen($email) <=3)
$error = 'Введите мыло';
elseif (strlen($login) <=3)
$error = 'Введите логин';
elseif (strlen($pass) <=3)
$error = 'Введите пароль';
if ($error !=''){
echo $error;
exit();
}
echo 'Готово';
Ответы (2 шт):
Вероятно ваши данные уходят в формате json, которые не парсятся автоматически в суперглобальную переменную $_POST.
Попробуйте следующее:
$data = json_decode(file_get_contents('php://input'), true);
$username = trim(filter_var($data['username'], FILTER_SANITIZE_STRING));
$email = trim(filter_var($data['email'], FILTER_SANITIZE_EMAIL));
$login = trim(filter_var($data['login'], FILTER_SANITIZE_STRING));
$pass = trim(filter_var($data['pass'], FILTER_SANITIZE_STRING));
...
Подготовил для Вас универсальный код. Всё что нужно - это задать действия кнопки и передачу нужных данных. Попробуйте детальнее изучить данный код и не совершать подобных ошибок
<form id="myForm" action="" method="post">
<label for="username">Ваше имя</label>
<input type="text" name="username" id="username" class="form-control">
<label for="email">Email</label>
<input type="email" name="email" id="email" class="form-control">
<label for="login">Логин</label>
<input type="text" name="login" id="login" class="form-control">
<label for="pass">Пароль</label>
<input type="password" name="pass" id="pass" class="form-control">
<div class="alert alert-danger mt-2" id="block"></div>
<button id="reg_user" type="button" class="btn btn-success mt-5">
Зарегистрироваться
</button>
</form>
<?php #require 'blocks/aside.php'; ?>
<?php #require 'blocks/footer.php'; ?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script>
// передаем данные через аякс по ид форм
$(document).ready(function() {
$("#reg_user").click( // считываем клик определённой кнопки
function() {
sendAjaxForm('block', 'myForm', 'reg/registr.php', this.id); // Передача указателей
return false;
}
);
});
function sendAjaxForm(result_form, form1, url, butcli) { // Функция обработки
$.ajax({
url: url, //url страницы
type: "POST", //метод отправки
data: $("#" + form1).serialize(), // Сеарилизуем объект
success: function(data){ // Данные отправлены
if(data=='Готово'){
$('#'+result_form).text('Все готово');
$('#'+butcli).hide();
} else {
$('#'+result_form).text(data);
}
},
error: function(response) { // Данные не отправлены
alert('Ошибка. Данные не отправлены.');
}
});
}
</script>