Задать вопрос
IgorBee
@IgorBee
JS,VBS,3D.Web с 07.2015

В чём ошибка if при отправке на почту?

если проверку if убрать на количество символов то на почту письма приходят,а ессли такая проверка стоит то письма не приходят.

$('#form1').submit(function(e) {
      e.preventDefault();
 if(phoneNomb.value.length>8){

  $.post('/mail.php', {
   phone: $('input[name="phone"]', $('#form1')).val(),
   nama1: $('input[name="nama1"]', $('#form1')).val()
});


  alert("Успешно отправлено!");   
  return false;

  }else{
  alert("Введите,пожалуйста ,номер телефона");
  return false;
      };
  });


PS,алерт об отправке выходит,но письма сами на почту не приходят.
  • Вопрос задан
  • 151 просмотр
Подписаться 1 Оценить 7 комментариев
Решения вопроса 1
ms-dred
@ms-dred
Вечно что то не то и что то не так...
Правильно, тут алерт живет своей жизнью и с самим скриптом ничего общего не имеет.
Про отлов ошибок в $.post читаем в доке api.jquery.com/jquery.post
Я обычно делаю отправку через $.ajax и исключительно с ответом статуса сервера обрабатываю данные для более тонкой ловли ошибок.

Писал на коленке и PHP не затрагивал!

Пример HTML формы
<form id="form">
    <input type="text" name="phone" value="телефон">
    <input type="text" name="name" value="Имя">
    <button type="submit" class="btn">
    Отправить данные
</button>
</form>

Обработчик формы
(function($) {
    // Обработка формы
    $('#form').on('click', '.btn', function() {

        var $btn = $(this);
        var $data = $btn.serialize();

        console.log($data); // В консоле браузера смотрим что содержит переменная $data после нажатия на кнопку "Отправить данные"

        $.ajax({
            "url": '/mail.php',
            "method": "POST",
            "data": $data,
            beforeSend: function() { // Изменим состояние кнопочки button
                $btn
                    .prop('disabled', true)
                    .text('Данные отправляются....');
            },
            statusCode: { // При статусе 200, скрипт на сервере (PHP) отработал всё должным образом
                200: function() {
                    $btn
                        .text('Сообщение успешно отправлено.');
                    // Нужно узнать в phpinfo включена ли функция mail(), т.е. данное сообщение придет даже если почта не отправилась, поэтому необходимо колупаться в PHP и делать соответствующие проверки
                },
                403: function(err) { // Если на стороне PHP какие то проблемы, нужно отдать заголовок 403 и тогда сообщение с ошибкой вылетит в алерте
                    alert(JSON.stringify(err));

                    // Изменим статус кнопочки
                    $btn
                        .prop('disabled', false)
                        .text('Попробовать вновь?');
                },
                404: function() { // Лишняя проверка, но в данном случаем временно можно проверить достук к файлу
                    alert('Файл mail.php вернул заголовок 404, файл не найден!');
                }
            }
        });

    });

}(jQuery));


На сервере в PHP делаем различные проверки на заполненность полей phone, name. Если они отсутствуют отдаем заголовок сервером 403 и сообщение об ошибке. Далее отправляем почту по mail(), автоматом должен придти заголовок 200 и кнопочка формы поменяет текст.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы