Ajax форма пост-выпуск - PullRequest
       3

Ajax форма пост-выпуск

0 голосов
/ 18 октября 2018

Я использую адрес электронной почты формы Godaddy для отправки электронной почты из формы на размещенной странице.Форма отправляет поля в "gdform.php", он отправляет электронную почту и перенаправляет на мою страницу.Там нет никаких проблем, когда он отправляет и перенаправляет.Так как он обновляет / загружает страницу снова, я хочу отправить форму с ajax.Когда я использую ajax, я не могу получить электронную почту.Я сравнил заголовки запроса и ответа.После того, как я установил некоторые заголовки, теперь они показывают те же данные запроса / ответа.Я могу получить ответ на запрос ajax, который является перенаправленным содержимым страницы.Это означает, что форма успешно отправлена ​​в gdform.php и перенаправлена ​​на мою страницу.Я не мог понять, почему сообщение формы ajax не работает для отправки электронного письма, даже если оно успешно отправлено и получает ответ.

// Форма контакта

<form id="main-contact-form" name="contact-form" method="post" action="gdform.php">
<input type="text" name="name">
<input type="email" name="email">
<textarea name="comments" id="comments"></textarea>
<input type="submit" name="submit" value="Submit">

<input type="hidden" name="subject" value="Form Submission" />
<input type="hidden" name="redirect" value="index.html" />
<input type="hidden" name="form_order" value="alpha"/>
<input type="hidden" name="form_interval" value="default"/>
<input type="hidden" name="form_format" value="html"/>
</form>

// Форма контакта js

var form = $('#main-contact-form');
form.submit(function(event){
    event.preventDefault();
    var form_status = $('<div class="form_status"></div>');
    $.ajax({
        type: "POST",
        contentType: "application/x-www-form-urlencoded",
        headers: { "Upgrade-Insecure-Requests": "1",
                    Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
        },
        crossDomain: true,
        url: $(this).attr('action'),
        beforeSend: function(){
            form.prepend(form_status.html('Email is sending...'));
        }
    }).done(function(data){
        console.log("done " + data);
        form_status.html('Thank you for contact us.');
    });
});

1 Ответ

0 голосов
/ 18 октября 2018

Похоже, вы не включили данные в свой почтовый запрос.

Включите атрибут «data» в объект, который вы передаете .ajax:

$.ajax({
    type: "POST",
    contentType: "application/x-www-form-urlencoded",
    headers: { "Upgrade-Insecure-Requests": "1",
                Accept: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    },
    crossDomain: true,
    url: $(this).attr('action'),
    data: someData, # <----------HERE
    beforeSend: function(){
        form.prepend(form_status.html('Email is sending...'));
    }
})

Вам нужно будет сопоставить его с элементами dom, которые вы хотите отправить.Я думаю, что вы можете сделать это с .serialize (), например:

let someData = $('#main-contact-form').serialize();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...