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.
Se vuoi aggiornamenti su Serializzare i campi di un form in jQuery inserisci la tua email nel box qui sotto: