Serialize form not working in jQuery

Jquery

Jquery Problem Overview


Can you please take a look and help me realize where am I going wrong with this? Here is the jsfiddle link: http://jsfiddle.net/Hitman666/QcEkj/1/ but also here is that code

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() );   
    });
});  

All I'm getting is an empty string.

Jquery Solutions


Solution 1 - Jquery

You have to give your form elements names!

This is independent of jQuery. Every form element must have a name to be considered for form submission as successful control:

> A successful control is "valid" for submission. Every successful control has its control name paired with its current value as part of the submitted form data set. A successful control must be defined within a FORM element and must have a control name.

jQuery just ignores those elements that don't have a name (or, depending on how it gets the elements, it might not even see them as the form itself has no reference to them).

Solution 2 - Jquery

Something else that prevents serializeArray() from serializing properly is disabled inputs. serializeArray does not serialise disabled inputs, in much the same way that disabled inputs are not submitted with the form.

> A successful control is "valid" for submission. > > - Controls that are disabled cannot be successful.

Source

Solution 3 - Jquery

Please add a name to your input field:

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

In this fiddle I have added a name and it is working fine.

Solution 4 - Jquery

I think the problem is that you're trying to select form like

$("form");

But this is equivalent to

getElementsByTagName("form");

This returns an array of objects.
So, instead you can use the #id selector, or use the index to access the form. Hope this helps.

Solution 5 - Jquery

First of all, you need to give name attribute to all input controls like textboxes etc. Then please check whether your id's are clashing or not, I had the same id for form and the one section that's where my problem was.

Solution 6 - Jquery

You have not referenced the form correctly in your javascript

Try changing to this:

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

Solution 7 - Jquery

Be careful not to put a form inside another form.

Obviously op has not but this could easily happen with modules and partials been placed incorrectly

Solution 8 - Jquery

I must share my research, first of all, if you want to get all value from a form, please add:

<form method="post" name="MUST_ASSIGN" id="form">
...

name="MUST_ASSIGN" must be presented, and DO NOT duplicate form's ID.

Second: disable input can NOT be get. If you disable all input field before form.serialize(), you will get NOTHING.

This code is valid:

...
var Allinput = $('#form').serialize();
$(_self).find('input').prop('disabled', 'disabled');
...

But this code is get nothing:

$(_self).find('input').prop('disabled', 'disabled');
var Allinput = $('#form').serialize();

Good day!

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionNikolaView Question on Stackoverflow
Solution 1 - JqueryFelix KlingView Answer on Stackoverflow
Solution 2 - JqueryLiamView Answer on Stackoverflow
Solution 3 - JquerywhoknowsView Answer on Stackoverflow
Solution 4 - Jqueryssi-anikView Answer on Stackoverflow
Solution 5 - Jquerypranav shindeView Answer on Stackoverflow
Solution 6 - Jqueryuser12229470View Answer on Stackoverflow
Solution 7 - JqueryHarry BoshView Answer on Stackoverflow
Solution 8 - JqueryJamviet.comView Answer on Stackoverflow