2015-08-03 140 views
0

我已經使用表達式引擎的插件自由形式創建了一個基本的提交表單。從CMS方面,我的數據正在提交到EE CMS。但是,在我提交了我的詳細信息後,而不是收到成功消息後,我在我的表單object object上收到以下消息。 <div id="form-messages" class="success">[object Object]</div>Jquery AJAX提交表單錯誤

我假設這與我的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)'顯示什麼? – Barmar

+0

Object {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

生活節省! ! ! – NewBoy

+0

是否還有一種方法可以標記字段中的錯誤,即如果用戶輸入無法識別的電子郵件地址等 – NewBoy