jQuery 양식 직렬화-빈 문자열


95

내 HTML :

 <script type="text/javascript">

    $(function() {

        $("#bt1").click(function() {

            var f = $("#form1");
            var formData = f.serialize();

            alert(formData);
        });

    }); 
</script> 

 <div id="div1">
      <form id="form1" action="/Home/Test1" method="post" name="down">
        <div id="div2">
            <input id="input1" type="text" value="2" />
        </div>    
      </form>
  </div>

 <input type="submit" id="bt1" />

클릭 이벤트를 시작하면 formData가 비어 있습니다. jQuery 1.4.2를 사용하고 있습니다.

답변:


214

당신은 포기해야 input요소의 이름을. 예 :

<form id="form1" action="/Home/Test1" method="post" name="down">
    <div id="div2">
        <input id="input1" type="text" value="2" name="foo"/>
    </div>    
</form>

경고 상자에 표시 foo=2됩니다.

.serialize()양식 필드의 이름과 값을 가져와 name1=value1&name2=value2. 이름이 없으면 그러한 문자열을 만들 수 없습니다.

참고 name다른 무언가이다 id. 양식을 "정상적인"방식으로 사용했다면 양식도 작동하지 않을 것입니다. 모든 양식 필드에는 이름이 필요합니다.


1
양식 직렬화 btw에 ID가 필요합니까?

여기에도 Madbreaks의 답변을 포함하도록 제안하겠습니다.
Slavic

이름이 있지만 뷰를 직렬화 할 때 여전히 빈 문자열이 있으므로 이름은 예를 들어 [0] .Unit, [0] .Currency
Marc Roussel

아래 답변이 도움이되었습니다 ... 입력이 비활성화되지 않았는지 확인하십시오!
사운드 스트라이프

83

이 특정 예제에는 적용되지 않지만 하나 이상의 양식 입력이 disabled. 이러한 입력은 직렬화 된 문자열에 표시되지 않습니다. 제 경우에는 모든 양식 입력에 값이 있지만 비활성화되어 빈 문자열이 반환됩니다.


4
그것은 불쾌한 것입니다. 내가 메일 아약스 스타일을 보내고있다 동안 필드를 비활성화하고 싶었을했다 전에 양식을 직렬화 ...
다니엘 랭

1
오 마이 갓슈 이것은 나를 미치게 만드는 문제였습니다. +1 남자, 비활성화 된 요소에서 작동하도록 만들 방법은 없나요?
Noitidart 2014

@Noitidart serialize입력을 반복하고 비활성화 된 입력을 포함하는 고유 한 jQuery 확장을 작성할 수 있습니다. 그러나 내가 아는 한 바로 사용할 수있는 jQuery를 사용하여이를 수행 할 방법이 없습니다.
Madbreaks 2014

비활성화 된 요소는 사용자 입력을 포함하지 않아야하므로 비활성화 된 요소를 포함하지 않는 것이 좋습니다.
Jenny O'Reilly

2
@ JennyO'Reilly 물론입니다. 사용자 입력을 포함하지 않는다고해서 "값이 없음"을 의미하지는 않습니다.
Madbreaks

10

name입력에 속성 이 없습니다 ... 직렬화에 문제가 될 수 있습니다.

<input id="input1" type="text" value="2" name="input1" />

남자. 당신은 그런 생명의 구세주입니다! 감사합니다.
Anjana Silva

6

또한 페이지에 동일한 ID를 가진 2 개의 요소가 없는지 확인하십시오.


3
이것은 질문에 대한 답변이 아니라 설명입니다. 나중에 댓글을 사용하세요. 감사합니다 :)
Gone Coding
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.