2013-02-15 2 views
4

내 애플 리케이션을 구축하기 위해 Jquery와 백본을 사용하고 있습니다. 최근에는 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>* 

내가 사용하고 있습니다 : JSON을 만들기위한

**$.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; 
     }** 

.. 문제는 라인 $ (이) .serializeArray는()이다; $ (이) .serializeArray() : 이는 빈 배열을 반환 배열 [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 
: 배열 [0]

내 목적은 "이"처럼 보인다

AMD 아키텍처로 게임하기 전에이 양식을 어떻게 피하면 좋을까요?

+1

실제로 필드에 이름을 지정하지 않았기 때문일 수 있습니다. 이름이있는 입력란 만 처리됩니다. – MatRt

답변

13

양식 요소에 이름 속성이 없습니다. 양식을 제출할 때 요소의 값은 해당 이름을 키로 사용하여 서버에 게시됩니다. 그래서 그 이름이 중요합니다. jQuery serializeArray Docs

.serializeArray() 메소드가 포함되어야하는 요소를 결정하기 위해 성공적으로 제어하기위한 표준 규칙을 사용 W3C에 따르면

; 특히 요소는 사용 불가능하게 할 수 없으며 name 속성을 포함해야합니다. 단추를 사용하여 양식을 제출하지 않았으므로 제출 단추 값이 직렬화되지 않습니다. 파일 선택 요소의 데이터는 직렬화되지 않습니다.

+0

안녕하세요 SybariteManoj이 답변을 주셔서 감사합니다 .... – stef

+0

당신은 오신 것을 환영합니다! :) –

+0

Jeez, 이것이 그 것이었다는 것을 믿을 수 없다 : p 충돌 과정에 감사드립니다! –

관련 문제