I want to do some pre-server-validation of a form in a Backbone.js model. To do this I need to get the user input from a form into usable data. I found three methods to do this:
var input = $("#inputId").val();
var input = $("form.login").serialize();
var input = $("form.login").serializeArray();
Unfortunately, none of the provide a good reabable and developable JSON object which I require. I already looked through several questions on Stack Overflow, but I found only some extra libraries.
Doesn't Underscore.js, the current jQuery or Backbone.js provide a helper method?
I can't imagine there is no request for such a function.
HTML
<form class="login"> <label for="_user_name">username:</label> <input type="text" id="_user_name" name="user[name]" value="dev.pus" /> <label for="_user_pass">password:</label> <input type="password" id="_user_pass" name="user[pass]" value="1234" /> <button type="submit">login</button> </form>
JavaScript
var formData = $("form.login").serializeObject(); console.log(formData);
Outputs
{ "name": "dev.pus", "pass": "1234" }
Backbone.js model
var user = new User(formData); user.save();
How to Convert Form Data to JSON With Object. fromEntries() Note: For both methods, we can use JSON. stringify() to convert the object into a JSON string, which we can then use to send JSON encoded data to APIs.
stringify($("#emails_form"). serializeArray()); If you want to store formData in a JSON file, you need to post it to the server (e.g. per AJAX) and save it. But in that case, you can simply post the form und convert it to JSON on the server itself.
jQuery serialize() MethodThe serialize() method creates a URL encoded text string by serializing form values. You can select one or more form elements (like input and/or text area), or the form element itself. The serialized values can be used in the URL query string when making an AJAX request.
To serialize a FormData object into a query string, pass it into the new URLSearchParams() constructor. This will create a URLSearchParams object of encoded query string values. Then, call the URLSearchParams. toString() method on it to convert it into a query string.
Here's a function for this use case:
function getFormData($form){ var unindexed_array = $form.serializeArray(); var indexed_array = {}; $.map(unindexed_array, function(n, i){ indexed_array[n['name']] = n['value']; }); return indexed_array; }
Usage:
var $form = $("#form_data"); var data = getFormData($form);
You can do this:
function onSubmit( form ){ var data = JSON.stringify( $(form).serializeArray() ); // <----------- console.log( data ); return false; //don't submit }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <form onsubmit='return onSubmit(this)'> <input name='user' placeholder='user'><br> <input name='password' type='password' placeholder='password'><br> <button type='submit'>Try</button> </form>
see this: http://www.json.org/js.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With