РЕДАКТИРОВАТЬ: я решил свою проблему, потому что у меня забыл оператор "требовать" в коде. Извините, что не знал об этом раньше, и спасибо за ваше время.
Я новичок в веб-разработке, и второй раз я использую AJAX на сайте.
Это просто проверка формы контакта с использованием ajax и php проверки на стороне клиента. Вот проблема: мой код на самом деле работает, как и ожидалось, для части проверки, так как все работает нормально, но я не понимаю, что я пропускаю или делаю неправильно, потому что я получаю строку поверх моего сайта (на каждой странице только страница контактов между прочим), которую я не хочу, очевидно,
Я понимаю, что это происходит из моего php кода, фактически повторяющего мой json_encode ($ data), но я не понимаю, почему и как это сделать, чтобы избежать этого
Вот мой код:
JS:
let resultMessage = $('#resultMessage')
let form = $('#contact_form')
form.submit(function(e){
$('span.error').empty()
e.preventDefault()
$.ajax({
type: "POST",
url: form.attr("action"),
data: form.serialize(),
dataType: 'json',
success: function(response) {
if(response.success == true){
resultMessage.html('Message sent succesfully')
} else {
resultMessage.html('Fail')
if (response.errors.nom != null) {
$('#name_error').html(response.errors.nom);
}
if (response.errors.email != null) {
$('#email_error').html(response.errors.email);
}
if (response.errors.message != null) {
$('#message_error').html(response.errors.message);
}
}
},
error: function(){
console.log('error')
}
})
})
PHP
$success = false;
$errors = [];
// inputs validation
$errors = textInputValidation($errors, $name, 'name', 2, 50);
$errors = emailValidation($errors, $email, 'email');
$errors = textInputValidation($errors, $message, 'message', 10, 5000);
// if there is no error =>
if (count($errors) == 0) {
// code actualy sending the message
$success = true;
}
$data = array(
'errors' => $errors,
'success' => $success
);
header('Content-type:application/json');
echo json_encode($data);
Так что этот код работает, но проблема в том, что я получаю эту строку поверх моего сайта
{"errors":{"name":"please fill this field","email":"please fill this field","message":"please fill this field"},"success":false}
Она есть на каждой странице, а не только на странице контактов, и она даже не меняется, когда проверка в порядке, и нет ошибок в форма или где-нибудь еще.
Возможно, мне не хватает чего-то очень базового c, извините за это.
Спасибо за вашу помощь