我有一个表格。我想提交表单而不重新加载页面。所以我使用 ajax 将数据发送到 PHP,然后使用 PHP 将错误存储在数组中来验证输入。如何将错误数组返回到 javascript 并在输入字段中显示错误。
有什么建议么?
<form action="" method="post" id="order-form">
<div class="row">
<div class="col-md-6">
<div class="form-group">
<input type="text" name="name" placeholder="Your Name" id="name" class="form-control">
<small></small>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<input type="text" name="email" placeholder="Email Address" id="email" class="form-control">
<small></small>
</div>
</div>
</div>
<!-- some more inputs -->
<?= csrf_token_tag(); ?>
<button type="submit">Subscribe</button>
</form>
PHP
<?php
$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';
$csrf_token = $_POST['csrf_token'] ?? '';
$errors = [];
if (!csrf_token_is_valid($csrf_token) && !csrf_token_is_recent($csrf_token)) {
$errors['form'] = 'The security token is missing from your request';
}
if (is_blank($name) || has_length_less_than($name, 3)) {
$errors['name'] = 'Name must be at least 3 chars long.';
}
if (is_blank($email) || !has_valid_email_format($email)) {
$errors['email'] = 'Looks like this email is incomplete.';
}
if (empty($errors)) {
// do something
} else {
return $errors;
}
Javascript
const form = $('#order-form')
form.on('submit', e => {
e.preventDefault()
$.ajax({
type: 'post',
url: '<?= SITE_URL . '/private/shared/order-form-process'; ?>',
data: form.serialize(),
success: (result) => {
console.log(result)
}
});
})