Здравствуйте
Есть форма HTML
<form role="form" id="formSubscribe" action="" method="post">
<div class="form-group has-feedback has-feedback-left">
<input type="email" class="form-control" id="emailSubscribe" name="emailSubscribe" placeholder="Email">
<span class="validation-error-label" id="emailSubscribeError"></span>
</div>
<button type="submit" class="btn btn-block bg-info" id="submitSubscribe" name="submitSubscribe">Подписаться <i class="icon-checkmark4 position-right"></i></button>
</form>
php обработчик формы
/* Массив с ошибками по умолчанию пустой */
$errorEmailSubscribe = [];
/* Если была нажата кнопка Подписаться */
if (isset($form['submitSubscribe'])) {
/* Если поле не заполнено */
if ($form['emailSubscribe'] == '') {
$errorEmailSubscribe[] = $text['1005'];
}
/* Проверка на минимальное количество символов в строке */
if (strlen($form['emailSubscribe']) < Validator::MIN_EMAIL) {
$errorEmailSubscribe[] = $text['1011'];
}
/* Проверка на максимальное количество символов в строке */
if (strlen($form['emailSubscribe']) > Validator::MAX_EMAIL) {
$errorEmailSubscribe[] = $text['1012'];
}
/* Проверка корректности поля */
if (!preg_match(Validator::PREG_MATCH_EMAIL, $form['emailSubscribe'])) {
$errorEmailSubscribe[] = $text['1013'];
}
/* Проверка на существования поля в БД */
if (R::count(DB::MAIN.DB::TABLE_SUBSCRIBE, 'email = ?', [$form['emailSubscribe']]) > Config::HIDDEN) {
$errorEmailSubscribe[] = $text['1043'];
}
trim($form['emailSubscribe']);
/* Если ошибок нет заносим в БД */
if (empty($errorEmailSubscribe)) {
$dispense = R::dispense(DB::MAIN.DB::TABLE_SUBSCRIBE);
$dispense['email'] = $form['emailSubscribe'];
R::store($dispense);
/* Эта сессия показывает уведомление об успешном заполнении формы */
$_SESSION['modal'] = true;
/* Функция перезагрузки страницы с сбросом данных с формы */
$assistant->redirectCurrentUrl();
}
}
в переменной $errorEmailSubscribe храниться просто текст ошибки например (Максимальная длина email 32 символа)
Потом на front-end вывожу ошибки если они есть, если нет вывожу уведомление что все нормально
В теге span с ID emailSubscribeError я вывожу все ошибки по очереди с помощью функции array_shift()
Прошу помощи в написании JS скрипта который бы проверял все ошибки на Ajax без перезагрузки страницы.
Перелопатил весь google много информации нашел, но все без успешно, так как все показывают примеры проверки ajax без занесения данных в БД.
ajax отправляется как-то так:
$('#formSubscribe').submit(function(e) {
e.preventDefault();
$.ajax({
url: '/script.php',
data: {email: $('#emailSubscribe').val()},
success: function(data) {
console.log(data);
},
error: function (request, status, error) {
console.log(request);
console.log(status);
console.log(error);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form role="form" id="formSubscribe" action="" method="post">
<div class="form-group has-feedback has-feedback-left">
<input type="email" class="form-control" id="emailSubscribe" name="emailSubscribe" placeholder="Email">
<span class="validation-error-label" id="emailSubscribeError"></span>
</div>
<button type="submit" class="btn btn-block bg-info" id="submitSubscribe" name="submitSubscribe">Подписаться <i class="icon-checkmark4 position-right"></i></button>
</form>
Сборка персонального компьютера от Artline: умный выбор для современных пользователей