I am getting an error when I run this code this way…
var action = $("#action_button").html();
var results = [];
$('#main_form input').each(function(){
results.push({
this.id : this.value
});
});
var json = JSON.stringify(results);
… but I don’t get the results I want when I execute it this way…
var action = $("#action_button").html();
var results = [];
$('#main_form input').each(function(){
results.push({
id:this.id
value: this.value
});
});
var json = JSON.stringify(results);
I want it to return:
{id: "22", first_name: "john", last_name: "smith"}
It is currently returning:
{"id":"id","value":"22"},{"id":"first_name","value":"john"},
{"id":"last_name","value":"smith"}
Advertisement
Answer
.push() is for array [], for object {} use object[key] = value
var results = {}; // <== object
$('#main_form input').each(function() {
results[this.id] = this.value;
});
console.log(JSON.stringify(results))<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <form id="main_form"> id: <input id="id" value="22" /><br> name: <input id="first_name" value="john" /> <br> surname: <input id="last_name" value="smith" /><br> </form>