@Pazzetif

Почему Ajax передает пустые значения?

Собственно, ошибок никаких нет, код 200.
На почту приходит только шаблон с php обработчика. Сам я в этом очень плохо шарю, прошу вашей помощи.
5b2bc7e21cac9862062926.png
<form class="pop-up-one" action="ajax-contact-form.php">
            <input type="text" value="" placeholder="Введите имя" name="name" required>
            <input class="phone-mask-input" type="tel"  value="" placeholder="Введите телефон" name="message">
            <input type="text"  value="" placeholder="Введите email" name="email" required>
            <button type="submit" class="button-pop-up">Отправить</button>
        </form>

$('.pop-up-one').on('submit', function(e) {
    e.preventDefault();
        var $form = $(this);

    function objectifyForm(formArray) {

        var returnArray = {};
        for (var i = 0; i < formArray.length; i++){
            returnArray[formArray[i]['name']] = formArray[i]['value'];
        }
        return returnArray;
    }

        $.ajax({
            type: 'POST',
            url: $form.attr('action'),
            data: objectifyForm($form.serialize()),
            success: function (response) {
                response = JSON.parse(response);
                if (response.type && response.type === 'success') {

                    $.magnificPopup.open({
                        items: {
                            src: '#popup-sank',
                            type: 'inline'
                        },
                        removalDelay: 500, //delay removal by X to allow out-animation
                        mainClass: 'my-mfp-zoom-in',
                        closeBtnInside: false
                    });
                    $form[0].reset();
                } else {

                }
            },
            error: function (response) {

            }
        });

});
  • Вопрос задан
  • 383 просмотра
Решения вопроса 1
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
У вас objectifyForm($form.serialize()) возвращает {undefined: undefined} т.е. на сервер ничего не идет. Не используйте objectifyForm. она вам не нужна, она работает с массивом полей, а $form.serialize() возвращает строку url параметров, и их как раз вы можете напрямую передавать в ajax

$.ajax({
            type: 'POST',
            url: $form.attr('action'),
            data: $form.serialize(),
            success: function (response) {
                response = JSON.parse(response);
                if (response.type && response.type === 'success') {

                    $.magnificPopup.open({
                        items: {
                            src: '#popup-sank',
                            type: 'inline'
                        },
                        removalDelay: 500, //delay removal by X to allow out-animation
                        mainClass: 'my-mfp-zoom-in',
                        closeBtnInside: false
                    });
                    $form[0].reset();
                } else {

                }
            },
            error: function (response) {

            }
        });
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Jeer
@Jeer
уверенный пользователь
Что-то я вчера пьяный был, конечно же нужно
objectifyForm($form.serializeArray())

В любом случае, я думал, что вы мне поможете разобраться с ошибкой, так как вижу её второй раз ) но оставим этот вопрос кому-нибудь еще
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы