jQuery: serializzare un form come oggetto letterale per AJAX

jQuery: serializzare un form come oggetto letterale per AJAX

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.

Torna su