Quando inviamo un form tramite AJAX è sempre necessario serializzare i dati presenti per poterli far gestire dallo script lato server che andrà ad elaborare la richiesta. Di solito questa serializzazione ha la forma di una stringa che si presenta così:
name=Gabriele&email=gabriele.romanato@gmail.com
Il problema è che i metodi nativi di jQuery e anche quelli di molti plugin di default serializzano tutti i campi dei form, anche quelli che non sono rilevanti per l'elaborazione lato server. Per ovviare a questo problema possiamo scrivere il seguente plugin:
(function($) { $.fn.getFormData = function() { var data = []; this.find(':input').not(':submit').each(function() { var $inputName = $(this).attr('name'); var $inputVal = $(this).val(); var formValue = $inputName + '=' + $inputVal; data.push(formValue); }); return data.join('&'); }; })(jQuery);
Questo semplice plugin ricerca tutti i campi ad eccezione del bottone di invio e memorizza il loro attributo name
e value
in un array che poi verrà trasformato in una stringa. Ovviamente possiamo personalizzare il nostro plugin in modo diverso, per esempio istruendolo a non considerare i campi di tipo hidden.