2013-06-02 50 views
2

我在ajax加載的表單上對serialize()有一些問題。Ajax加載表單上的jQuery序列化()不起作用

jQuery代碼:

$(document).on("submit", this.id, function(e) { 
    e.preventDefault(); 
    var frm  = e.target.id; 
    var frmData = $("#"+frm).serialize(); 
    console.log(frm); 
    console.log(frmData); 
}); 

控制檯輸出:

  1. 登錄表單
  2. (空文本)

形式其精靈(引導):

<div class="tab-pane active" id="logintab"> 
    <div class="well"> 
    <form class="form-horizontal" id="loginForm"> 
     <div class="control-group"> 
     <label class="control-label" for="inputEmail">E-mail adres</label> 
     <div class="controls"> 
      <input type="email" id="inputEmail" value="[email protected]" placeholder="E-mail adres" data-validation-email-message="Not a valid e-mail address" required> 
     </div> 
     </div> 
     <div class="control-group"> 
     <label class="control-label" for="inputPassword">Password</label> 
     <div class="controls"> 
      <input type="password" id="inputPassword" value="test" placeholder="Wachtwoord" data-validation-required-message="Not a valid password" required> 
     </div> 
     </div> 
     <div class="control-group"> 
     <div class="controls"> 
      <button type="submit" class="btn submitbtn"><i class="icon-signin"></i> Inloggen</button> 
     </div> 
     </div> 
    </form> 
    </div> 
</div> 
+0

'AJAX加載-form',這是否意味着你的'html'使用'ajax',然後讓將這個'html'插入到頁面中? –

+0

爲什麼不嘗試$(e.target).serialize()來代替?或者像$(「#loginForm」)。submit(function(e){console.log($(this).serialize());}); –

回答

8

表單元素需要有被序列化的名稱和一個值,你的元素沒有一個名稱。如果您添加一個名字:

<input type="email" name="email" id="inputEmail" ...... 

它工作得很好:

FIDDLE

+1

我沒想到那個(名字)!感謝您的幫助! – klaaz

+0

感謝您的幫助! –