2010-10-06 9 views
0

Alors, un peu la situation standard:

OK, so replacing <div> with <form> works. Now to see if any nesting issues occur...

<div id=hidden> 
    <input type=hidden value=2 id=i1 name=i1> 
    <input type=hidden value=5 id=i2 name=i2> 
    <input type=hidden value=6 id=i3 name=i3> 
    <input type=hidden value=1 id=i4 name=i4> 
    <input type=hidden value=10 id=i5 name=i5> 
</div> 

je dois soumettre ces données via POST. cependant, alert ($('#hidden').serialize()); renvoie une chaîne vide. Qu'est ce que j'ai mal fait?

Répondre

1

essayer

alert($('#hidden input').serialize()); ​// this will serialize all input element. 

si vous voulez Selects all input, textarea, select and button elements, utilisez :input

de Docs,

La méthode .serialize() peut agir sur un objet jQuery qui a sélectionné des éléments de formulaire individuels tels que <input>, <textarea> et <select>.Cependant, il est généralement plus facile de choisir lui-même la balise <form> pour la sérialisation

crazy demo

+0

Vouliez-vous dire faire un lien vers mon violon exact, ou faire vous possédez? :) –

+0

hahaha mauvais copier coller;) merci! – Reigel

4

En raison il est utilisé de .elements, vous ne pouvez .serialize() un <form> donc changer votre <div> à un <form> et il va travailler. Par exemple, here's the <div> version (ne fonctionne pas) et the <form> version (fonctionnant).

En aparté, assurez-vous de joindre vos attributs entre guillemets, comme ceci:

<form id="hidden"> 
    <input type="hidden" value="2" id="i1" name="i1"> 
    <input type="hidden" value="5" id="i2" name="i2"> 
    <input type="hidden" value="6" id="i3" name="i3"> 
    <input type="hidden" value="1" id="i4" name="i4"> 
    <input type="hidden" value="10" id="i5" name="i5"> 
</form>​ 

Une alternative consiste à briser .serialize() vers le bas dans its parts, comme ceci:

alert($.param($('#hidden :input').serializeArray())); 
//or 
alert($('#hidden :input').serialize()); 

Check out that version here (notez que cela fonctionne avec <div>).