2010-10-06 4 views
0

Так, несколько стандартная ситуация:

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> 

мне нужно отправить эти данные через POST. однако alert ($('#hidden').serialize()); возвращает пустую строку. Что я сделал не так?

ответ

1

попробовать

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

если вы хотите Selects all input, textarea, select and button elements, используйте :input

из Docs,

Метод .serialize() может воздействовать на объект JQuery, который выбрал отдельные элементы формы , такие как <input>, <textarea> и <select>.Однако, как правило, легче выбрать сам <form> тег для сериализации

crazy demo

+0

вы имели в виду, чтобы связаться с моей точной скрипкой, или сделать у вас есть? :) –

+0

hahaha неверный экземпляр вставки;) спасибо! – Reigel

4

Благодаря этому используется в .elements, вы можете только .serialize()<form> так изменить ваш <div> к <form>, и он будет работать.

Для иллюстрации here's the <div> version (не работает) и the <form> version (рабочий).

Как и в сторону, убедитесь, вложить свои атрибуты в кавычки, например:

<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>​ 

Альтернативой сломать .serialize() вниз в its parts, как это:

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

Check out that version here (обратите внимание, что оно работает с <div>).

Смежные вопросы