JQuery.serializeArray liefert derzeit dieses Ergebnis:
[Object { name="id", value="0"}, Object { name="gender[]", value="1"}, Object { name="gender[]", value="2"}, Object { name="countries[]", value="AU"}, Object { name="countries[]", value="GB"}, Object { name="ages[]", value="25"}, Object { name="ages[]", value="99"}]
Ich möchte das Ergebnis auf diese Weise formatiert bekommen:
{id: 0, gender: ['1', '2'], countries: ['AU', 'GB'], ages: ['25', '99']}
Wie kann dies erreicht werden?
Ich mochte es nicht, wie serializeArray seine Ausgabe formatiert, und ich habe eine Funktion erstellt, die sie auf akzeptablere Weise formatiert.
(function( $ ){
$.fn.serializeJSON=function() {
var json = {}, propname;
$.each($(this).serializeArray(), function(index, n){
propname = n.name.replace('[]', '');
if (!json.hasOwnProperty(propname))
{
json[propname] = n.value;
}
else if( ! (json[propname] instanceof Array) )
{
json[propname] = new Array(json[propname], n.value);
}
else
{
json[propname].push(n.value);
}
});
return json;
};
})(jQuery);
Nachdem das Formular erstellt wurde, setzen Sie einfach irgendwo dieses Codestück ein:
$('#form_id').submit(function(e) {
e.preventDefault();
e.stopPropagation();
var data = $(this).serializeJSON();
console.log(data);
})
Ich hoffe, es hilft denjenigen, die es mögen, wie ein Formular in PHP gepostet wird.