2013-02-15 138 views
4

我正在使用Jquery和backbone來構建我的應用程序。最近我使用require.js重寫了AMD架構中的項目。然後通過發佈表單來解決問題。這是我的表格:jQuery .serializeArray()返回空數組

*<div data-role="page" id="login" data-theme="a"> 
    <form class="loginPageForm"> 
     <div data-role="content" style="padding: 15px"> 
      <h3 id="login_heading"> 
       Login 
      </h3> 
      <div data-role="fieldcontain"> 
       <fieldset data-role="controlgroup" id="email_fieldset"> 
        <label for="email_textinput" > 
         Email 
        </label> 
        <input id="email_textinput" placeholder="[email protected]" value="" type="text" /> 
       </fieldset> 
      </div> 
      <div data-role="fieldcontain"> 
       <fieldset data-role="controlgroup" id="password_fieldset"> 
        <label for="password_textinput"> 
         Password 
        </label> 
        <input id="password_textinput" placeholder="Secret Password" value="" type="password" /> 
       </fieldset> 
      </div> 
      <input type="submit" class="btn" value="Login"/> 
      <a data-role="button" data-transition="none" data-theme="f" href="#register" id="registerButton">Register</a> 
     </div> 
    </form> 
</div>* 

,我使用:

**$.fn.serializeObject = function(){ 
      var arrayData, objectData; 
      arrayData = $(this).serializeArray(); 
      objectData = {}; 
      $.each(arrayData, function() { 
       var value; 

       if (this.value != null) { 
        value = this.value; 
       } else { 
        value = ''; 
       } 

       if (objectData[this.name] != null) { 
        if (!objectData[this.name].push) { 
         objectData[this.name] = [objectData[this.name]]; 
        } 

        objectData[this.name].push(value); 
       } else { 
        objectData[this.name] = value; 
       } 
      }); 

      return objectData; 
     }** 

創建的Json ..問題是線$(本).serializeArray();它返回一個空數組: $(本).serializeArray():數組[0] 長度:0 :數組[0]

我的對象 「這個」 看起來像:

arrayData: Array[0] 
objectData: undefined 
this: v.fn.v.init[1] 
0: form.loginPageForm 
0: fieldset#email_fieldset 
1: input#email_textinput 
2: fieldset#password_fieldset 
3: input#password_textinput 
4: input.btn 

你有什麼想法我應該如何避免這個問題,這種形式在我使用AMD架構之前工作?

+1

確實,這可能是因爲你沒有給你的領域命名。只有名稱的字段將被處理。 – MatRt 2013-02-15 03:06:40

回答

13

您的表單元素沒有名稱屬性。提交表單時,元素的值將以其名稱作爲關鍵字發佈到服務器。所以這個名字很重要。

根據jQuery serializeArray Docs

的.serializeArray()方法使用成功控制,以確定哪些元素應當包括標準的W3C規則;特別是該元素不能被禁用,並且必須包含一個名稱屬性。由於未使用按鈕提交表單,所以沒有提交按鈕值被序列化。來自文件選擇元素的數據不會被序列化。

+0

嗨SybariteManoj感謝您的回答這個作品.... – stef 2013-02-15 08:43:11

+0

歡迎你! :) – 2013-02-15 08:58:40

+0

Jeez,不能相信這是它:p感謝速成班! – 2016-11-07 12:17:25