jQueryフォームシリアライズ-空の文字列


94

私の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を使用しています。

回答:


213

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
フォームをシリアル化するためにIDが必要ですか?
Vic

ここにもマッドブレイクスの回答を含めることをお勧めします。
スラブ語

私は名前を持っていますが、ビューをコレクションとしてシリアル化すると空の文字列がまだあるので、名前はたとえば[0] .Unit、[0] .Currency
Marc Roussel

以下の回答が役に立ちました...入力が無効になっていないことを確認してください!
サウンドストライプ

82

これはこの特定の例には適用されませんが、1つ以上のフォーム入力がの場合、同じ動作が発生しますdisabled。これらの入力は、シリアル化された文字列には表示されません。私の場合、すべてのフォーム入力に値が含まれていましたが無効になっているため、空の文字列が返されました。


4
それは厄介な問題です。メールをajaxスタイルで送信しているときにフィールドを無効にしたかったため、フォームをシリアル化する前にフィールドを無効にしました...
Daniel Lang

1
あらまあ、これは私を夢中にさせていた問題でした。+1人、無効になっている要素で機能させる方法はありますか?
Noitidart 2014

@Noitidart serialize入力を反復処理し、無効なものを含む独自のjQuery拡張機能を作成できます。しかし、私の知る限り、すぐに使えるjQueryを使用してそれを行う方法はありません。
Madbreaks 14

無効化された要素にユーザー入力を含めることはできないため、無効化された要素を含めないことは理にかなっています。
ジェニー・オライリー2014年

2
@ JennyO'Reilly確かに、ユーザー入力が含まれていなくても、「値がない」という意味ではありません。
Madbreaks、2014年

10

name入力に属性がありません...シリアル化の問題である可能性があります。

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

おとこ。あなたはそのような救世主です!! ありがとうございました。
Anjana Silva

6

また、ページに同じIDの2つの要素がないことを確認してください。


3
これはコメントであり、質問に対する回答ではありません。今後はコメントをご利用ください。ありがとう:)
コーディング終了
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.