jQuery form serialize - boş dize


100

Benim 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" />

Click olayını başlattığımda formData boş. JQuery 1.4.2 kullanıyorum.

Yanıtlar:


217

inputElemana bir isim vermelisiniz . Örneğin:

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

uyarı kutusunda size verecektir foo=2.

.serialize()form alanlarının adını ve değerini alır ve benzeri bir dize oluşturur name1=value1&name2=value2. İsim olmadan böyle bir dizge oluşturamaz.

Bunun namefarklı bir şey olduğunu unutmayın id. Formunuz da "normal" şekilde kullanırsanız işe yaramazdı. Her form alanının bir adı olmalıdır.


1
form serialize btw için kimlikler gerekli midir?
Vic

Madbreaks'in cevabını buraya da eklemeyi önereyim.
Slavca

Bir ismim var ama görünümümün bir koleksiyon olduğunu serileştirirken hala boş dizeye sahibim, bu nedenle isimler örneğin [0] .Unit, [0] .Currency
Marc Roussel

Aşağıdaki cevap bana yardımcı oldu ... girişlerinizin DEVRE DIŞI olmadığından emin olun!
soundstripe

84

Bu belirli örnek için geçerli olmasa da, aynı davranış bir veya daha fazla form girdisi olduğunda ortaya çıkar disabled. Bu girdiler serileştirilmiş dizede görünmeyecektir. Benim durumumda, tüm form girdilerinin değerleri vardı, ancak devre dışı bırakıldı, bu da boş bir dizenin döndürülmesine neden oldu.


4
Bu çok kötü. Ajax tarzı posta gönderirken alanları devre dışı bırakmak istedim ve formu serileştirmeden önce yaptım ...
Daniel Lang

1
Aman tanrım, bu beni deli eden bir sorundu. +1 adam, devre dışı bırakılan öğeler üzerinde çalışmasını sağlamanın bir yolu var mı?
Noitidart

@Noitidart serializeGirişler üzerinde yinelenen ve engelli olanları içeren kendi jQuery uzantınızı yazabilirsiniz . Ancak bildiğim kadarıyla kutudan çıkar çıkmaz jQuery kullanarak yapmanın bir yolu yok.
Madbreaks

Devre dışı bırakılan öğelerin kullanıcı girdisi içermemesi gerektiğinden, devre dışı bırakılan öğelerin dahil edilmemesi mantıklıdır.
Jenny O'Reilly

2
@ JennyO'Reilly Elbette, ancak kullanıcı girişi içermemesi "bir değeri yok" anlamına gelmez.
Madbreaks

10

nameGirişte serileştirme için sorun olabilecek bir öznitelik yok .

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

Adam. Sen tam bir hayat kurtarıcısın !! Teşekkür ederim.
Anjana Silva

6

Ayrıca sayfada aynı kimliğe sahip 2 öğe olmadığından emin olun.


3
Bu bir yorumdur, sorunun cevabı değil. Lütfen ileride yorumları kullanın. Teşekkürler :)
Kodlamaya Gitti
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.