У меня есть приведенный ниже код jquery и сценарий обработки PHP, который я написал для получения данных почты с помощью ajax и проверки, а затем возврата ошибок. Но при отправке формы он всегда возвращает сообщение Success: form validated
, даже если я ввожу адрес электронной почты и номер телефона в неправильном формате. Они не проходят проверку. Как я могу исправить эту проблему? Заранее спасибо.
Jquery
<script>
// on form's send button click, send post data for processing via ajax
$(document).ready(function(){
$('#email-form').on('submit', function (e) {
// disable page reloading upon submit
e.preventDefault();
// get form values
var name = $('name').val();
var email = $('email').val();
var tel = $('tel').val();
var subject = $('subject').val();
var msg = $('msg').val();
// send data using ajax
$.ajax({
type: 'post',
url: 'ajax-email.php',
dataType: 'json',
data: {name:name, email:email, tel:tel, subject:subject, msg:msg},
success: function (data) {
if (data.code == 1) {
alert("Success: " +data.msg);
}
else {
alert("Error: " +data.msg);
}
}
});
});
});
</script>
ajax - электронная почта. php
<?php
$errorMsg = '';
// get post values to variables
$name = $_POST['name'];
//check email
if (!empty($_POST['email'])) {
if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$errorMsg = 'Invalid email format';
}
else {
$email = trim($_POST['email']);
}
}
// check phone number
if (!empty($_POST['tel'])) {
if (!filter_var($_POST['tel'], FILTER_SANITIZE_NUMBER_INT)) {
$errorMsg .= 'Invalid phone number';
}
else {
$tel = $_POST['tel'];
}
}
// get form subject and message
$subject = $_POST['subject'];
$msg = $_POST['msg'];
if (empty($errorMsg)) {
$success = 'form validated';
echo json_encode(['code' => 1, 'msg' => $success]);
}
else {
echo json_encode(['msg' => $errorMsg]);
}
?>