Проверка формы на Ajax + занесения данных в БД

186
11 апреля 2018, 06:02

Здравствуйте

  1. Есть форма 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>
    
  2. 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();
        }
    }
    
  3. в переменной $errorEmailSubscribe храниться просто текст ошибки например (Максимальная длина email 32 символа)

  4. Потом на front-end вывожу ошибки если они есть, если нет вывожу уведомление что все нормально

  5. В теге span с ID emailSubscribeError я вывожу все ошибки по очереди с помощью функции array_shift()

Прошу помощи в написании JS скрипта который бы проверял все ошибки на Ajax без перезагрузки страницы.

Перелопатил весь google много информации нашел, но все без успешно, так как все показывают примеры проверки ajax без занесения данных в БД.

Answer 1

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>

READ ALSO
Как мне сделать такую же фиксацию блоков как на этом сайте

Как мне сделать такую же фиксацию блоков как на этом сайте

http://cihadturhancom Наткнулся на портфолио, в котором хотел бы позаимствовать такую же фиксацию секции Мне надо , чтобы при одной прокрутке прокрутилось...

180
css, javascript: textarea текст разного цвета

css, javascript: textarea текст разного цвета

Подскажите пожалуйста, можно как-нибудь сделать так, чтобы часть текста в textarea поле было заданного цвета, отличного от основного цвета текста?

298
экспорт таблиц html в xlsx на js

экспорт таблиц html в xlsx на js

Доброго времени суток, стоит задача передать N таблиц html в excel в формате xlsx + передавать туда же картинку в виде base64, может кто сталкивался подскажите...

214
Неправильная работа классов css

Неправильная работа классов css

Проблема с работой cssПочему тег p с классом cite не работает? Написал всё правильно, проверил через ideone, работает нормально

206