2015-08-03 5 views
0

Я создал базовую форму представления с помощью бесплатной формы плагина выражения engine. С точки зрения CMS мои данные передаются в EE CMS. Однако после того, как я представил свои данные, а не получаю сообщение об успешном завершении, я получаю следующее сообщение в моей форме object object. <div id="form-messages" class="success">[object Object]</div>JQuery AJAX форма отправки error

Я предполагаю, что это имеет какое-то отношение к моему jquery. Поскольку функция работала, когда я проверял представление через php.

Ниже приведен фрагмент моего кода.

var form = $('#ajax-contact'); 
var formMessages = $('#form-messages'); 

$(form).submit(function(e) { 

e.preventDefault(); 
var formData = $(form).serialize(); 

// Submit the form using AJAX. 
$.ajax({ 
    type: 'POST', 
    url: $(form).attr('action'), 
    data: formData 
}) 
.done(function(response) { 
    // formMessages div has the 'success' class. 
    $(formMessages).removeClass('error'); 
    $(formMessages).addClass('success'); 

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

    // Clear the form. 
    $('#name').val(''); 
    $('#email').val(''); 
}) 
.fail(function(data) { 
    // Make sure that the formMessages div has the 'error' class. 
    $(formMessages).removeClass('success'); 
    $(formMessages).addClass('error'); 

    // Set the message text. 
    if (data.responseText !== '') { 
     $(formMessages).text(data.responseText); 
    } else { 
     $(formMessages).text('Oops! An error occured and your message could not be sent.'); 
    } 
}); 

}) 

HTML

<div id="form-messages" class="success"></div> 

exp:freeform:form 
      form_id="1" 
      admin_notify="[email protected]" 
      form:class="main-contact submit-fade ajax-form" 
      form:id="ajax-contact" 


     } 

      <ul class="small-block-grid-2 medium-block-grid-2 hide-form"> 
       <li> 
        <label for="name">Name</label> 
        {freeform:field:first_name 
         attr:class="form-control" 
         attr:placeholder="First Name" 
         attr:class="required" 
        } 

       </li> 

       <li> 
        <label for="email">Email</label> 
        {freeform:field:email 
         attr:class="form-control" 
         attr:placeholder="Email" 
         attr:class="required" 
        } 
       </li> 
       </ul> 
       <input type="submit" class="btn btn-success"> 

     {/exp:freeform:form} 
+0

Является ли контроллер возвратом JSON? Похоже, что jQuery анализирует JSON, поэтому 'response' - это объект, а не строка. – Barmar

+0

Что показывает 'console.log (response)' show? – Barmar

+0

Объект {success: true, entry_id: 5, form_id: "1", return: "http: //mysite/index.php/sandbox/freeform", return_url: "http: //mysiteindex.php/sandbox/freeform" } – NewBoy

ответ

1

Ответ в настоящее время обрабатывается как JSON. Использование:

.done(function(response) { 
    if (response.success) { 
     formMessages.removeClass("error").addClass("success").text("Success!"); 
     $("#name,#email").val(""); 
    } else { 
     formMessages.removeClass("success").addClass("error").text("Oops, failure!"); 
    } 
}) 
+0

Спасибо, я пробовал, что, тем не менее, он все еще не работает, я немного изменил свой вопрос, чтобы сделать что-то более понятным. – NewBoy

+0

LIFE SAVER! ! ! – NewBoy

+0

Есть ли способ, по которому я ошибаюсь в поле, то есть, если пользователь вводит непризнанный адрес электронной почты и т. Д. – NewBoy

Смежные вопросы