Сериализация формы не работает в jQuery


не могли бы вы взглянуть и помочь мне понять, где я иду не так с этим? Вот ссылка jsfiddle:http://jsfiddle.net/Hitman666/QcEkj/1/ но и вот этот код

HTML:

<form action="#" id="gamesForm">
    <p>                                                        
        <input id="gName" type="text" class="medium" />
        <span class="notification information">Game name</span>
    </p>

    <p>                            
        <span class="notification information">Enabled:</span>
        <input id="gEnabled" type="checkbox" />              
    </p>

    <br />
    <!--Additional data for extra type-->
    <div id="extraAdditionalData" class="hidden">                            
        <p>
            <input id="rRacers" type="text" class="medium" />
            <span class="notification information">Racers</span>
        </p>

        <p>
            <input id="rVideoSet" type="text" class="medium" />
            <span class="notification information">Video set</span>
        </p>                                                         
     </div>                
</form>

<a href="#" id="saveConfiguration" class="graybuttonBig">Save everything!</a> 

JavaScript:

$(document).ready(function(){
    $("#saveConfiguration").click(function(){
        alert( $("form").serialize() );   
    });
});  

все, что я получаю, это пустая строка.

6 51

6 ответов:

вы должны дать элементы вида names!

это не зависит от jQuery. Каждый элемент формы должен иметь name рассматривается для подачи формы как управления:

успешный контроль "действителен"для представления. Каждый успешный контроль имеет свой имя управления в сочетании с текущее значение в составе представленных набор данных формы. Успешный управление должно быть определено в пределах FORM элемент и должен быть имя управления.

jQuery просто игнорирует те элементы, которые не имеют имени (или, в зависимости от того, как он получает элементы, он может даже не видеть их, поскольку сама форма не имеет ссылки на них).

что-то еще, что мешает serializeArray() сериализации правильно disabled входы. serializeArray не сериализует отключенные входы, во многом так же, как отключенные входы не отправляются с формой.

успешный контроль "действителен"для представления.

  • управления отключен не может быть успешным.

источник

пожалуйста, добавьте name в поле ввода:

<input type='text' name='give_some_name' />

на эта скрипка я добавил name и он работает нормально.

Я думаю, что проблема в том, что вы пытаетесь выбрать форму, как

$("form");

но это эквивалентно

getElementsByTagName("form");

Это возвращает массив объектов.
Таким образом, вместо этого вы можете использовать #id селектор, или использовать индекс для доступа к форме. Надеюсь, это поможет.

прежде всего, вам нужно дать атрибут name для всех элементов управления вводом, таких как текстовые поля и т. д. Затем, пожалуйста, проверьте, сталкиваются ли ваши идентификаторы или нет, у меня был тот же идентификатор для формы и один раздел, в котором была моя проблема.

и ваша ссылка неверна. Попробуйте:

$("#gamesForm").serialize();