2016-05-13 5 views
1

У меня есть контактная форма, которая отправляет данные в скрипт PHP через AJAX. Это довольно просто, но я не могу получить входные значения с сериализацией. Идентификатор формы правильный, я получаю имя ввода, но не их значения. Вот мой код. Благодаря !JQuery serialize() пуст

\t //Contact form AJAX 
 
    var form = $('#contact-form'); 
 
    var formMessages = $('#form-messages'); 
 
    // Serialize the form data. 
 
\t var formData = $(form).serialize(); 
 
\t console.log($(form).serialize()); 
 
    // Set up an event listener for the contact form. 
 
\t $(form).submit(function(event) { 
 
\t  // Stop the browser from submitting the form. 
 
\t  event.preventDefault(); 
 
\t \t // Submit the form using AJAX. 
 
\t \t $.ajax({ 
 
\t \t \t type: 'POST', 
 
\t \t \t url: $(form).attr('action'), 
 
\t \t \t data: formData 
 
\t \t }) 
 
\t \t .done(function(response) { 
 
\t \t \t // Make sure that the formMessages div has the 'success' class. 
 
\t \t \t $(formMessages).hide().fadeIn(); 
 
\t \t \t $(formMessages).removeClass('error'); 
 
\t \t \t $(formMessages).addClass('success'); 
 

 
\t \t \t // Set the message text. 
 
\t \t \t $(formMessages).text(response); 
 

 
\t \t \t // Clear the form. 
 
\t \t \t $('#form_name').val(''); 
 
\t \t \t $('#form_email').val(''); 
 
\t \t \t $('#form_message').val(''); 
 
\t \t }) 
 
\t \t .fail(function(data) { 
 
\t \t \t // Make sure that the formMessages div has the 'error' class. 
 
\t \t \t $(formMessages).hide().fadeIn(); 
 
\t \t \t $(formMessages).removeClass('success'); 
 
\t \t \t $(formMessages).addClass('error'); 
 

 
\t \t \t // Set the message text. 
 
\t \t \t if (data.responseText !== '') { 
 
\t \t \t \t $(formMessages).text(data.responseText); 
 
\t \t \t } else { 
 
\t \t \t \t $(formMessages).text("Something went wrong."); 
 
\t \t \t } 
 
\t \t }); 
 
\t });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form id="contact-form" class="col-md-12" method="post"> 
 
         <h1>Contact</h1> 
 
         <fieldset class="form-group"> 
 
          <input type="text" id="form_name" name="form_name" class="form-control" placeholder="Your name"> 
 
         </fieldset> 
 
         <fieldset class="form-group"> 
 
          <input type="email" id="form_email" name="form_email" class="form-control" placeholder="Your email" required> 
 
         </fieldset> 
 
          <fieldset class="form-group"> 
 
         <textarea class="form-control" id="form_message" name="form_message" rows="3" placeholder="Your message" required></textarea> 
 
         </fieldset> 
 
         <button type="submit" class="btn btn-primary">Send</button>      
 
        </form>

https://jsfiddle.net/huja5pru/2/

ответ

0
Use serialize() method when form is submit. 

check this fiddle https://jsfiddle.net/6o6htoh1/1/ 
+0

Хорошо. Это имеет смысл. Спасибо, он отлично работает, когда я сериализую свои данные только тогда, когда форма была отправлена. – Quinox

+0

рад узнать, что он работает :) –

0

У вас есть синтаксической ошибки при использовании селектора JQuery на объект JQuery, когда вы выбираете вашу форму, вы должны использовать его в последнее время, как это:

var form = $('#contact-form'); //and then use it directly in the ajax call like this 
form.serialize(); // not $(form).serialize() 

Ваша корзина пуста. https://jsfiddle.net/ingemi/kbpnmptw/ Вы должны быть у u сериализуется непосредственно в вызове ajax

+0

Понял, я изменил синтаксис. Спасибо за совет ! – Quinox

+0

Я рад, что это вам поможет, gl – ingemi