jQuery permette di serializzare un form per l'invio in AJAX come stringa ma non come oggetto letterale. Possiamo tuttavia ovviare a questa lacuna con una semplice soluzione.
Si tratta semplicemente di trasformare i dati del form in un array e quindi assemblare l'oggetto letterale:
(function ($) {
$.fn.serializeFormJSON = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
})(jQuery);
Esempio d'uso:
$('form').submit(function (e) {
e.preventDefault();
var data = $(this).serializeFormJSON();
console.log(data);
});
A questo punto l'oggetto data
può essere utilizzato con i tradizionali metodi AJAX di jQuery.