zorro76
@zorro76

Не отправляется почта, в чем проблема?

На лендинге есть несколько форм обратной связи, все рабочие. Заказчик попросил добавить в приходящее письмо - с какой именно формы оно отправленно.

Вот как было для первой формы:
$("#form-1").submit(function() {

        if ($("#form-1").valid()) {
    
            var th = $(this);
            $.ajax({
                type: "POST",
                url: "mail.php",
                data: th.serialize()
            }).done(function () {

                $(".success").addClass("visible");
                setTimeout(function () {
                    // Done Functions
                    th.trigger("reset");
                    $(".success").removeClass("visible");
                }, 1000);

                $('#form-1')[0].reset(
                    setTimeout(function () {}, 1000)
                );

                $("#form-1").hide();

                $('.mfp-bg.mfp-ready').css({'display': 'none'});


                $('#popUpMessage').removeClass('hiddenDiv');
                setTimeout(function () {
                    $('#popUpMessage').addClass('hiddenDiv');
                }, 4000);
            });
        }
        return false;
    });


было добавлено следующее
th.push({name: 'form_name', value: 'name'});
и код немного видоизменен:
$("#form-1").submit(function() {

        if ($("#form-1").valid()) {
    
            var th = $(this).serialize();
            th.push({name: 'form-1', value: 'first'});
            
            $.ajax({
                type: "POST",
                url: "mail.php",
                data: th
            }).done(function () {

                $(".success").addClass("visible");
                setTimeout(function () {
                    // Done Functions
                    th.trigger("reset");
                    $(".success").removeClass("visible");
                }, 1000);

                $('#form-1')[0].reset(
                    setTimeout(function () {}, 1000)
                );

                $("#form-1").hide();

                $('.mfp-bg.mfp-ready').css({'display': 'none'});


                $('#popUpMessage').removeClass('hiddenDiv');
                setTimeout(function () {
                    $('#popUpMessage').addClass('hiddenDiv');
                }, 4000);
            });
        }
        return false;
    });


но письма перестали приходить вообще. Что тут не так? Где ошибка?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
var th = $(this).serialize();
  th.push({name: 'form-1', value: 'first'});

Метод .serialize() возвращает строку запроса, пушить в нее нельзя. Вам нужно просто добавить к строке нужные данные или обновить данные приходящие из формы и затем уже делать .serialize()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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