Añadir campos al enviar por Ajax de Jquery

Hoy me ha ocurrido que tenía que mandar un formulario por Ajax pero tenía que añadir una serie de campos a la hora de enviarlo. Hay varias soluciones:

  • Construir un Json con los nuevos valores y posteriormente recorrer  el formulario para ir añadiendo todos los campos.
  • Añadir los valores nuevos como input hidden dentro del formulario y luego simplemente hacer un serialize del formulario
  • Construir un Json con los campos del formulario y unirlos a los nuevos valores a enviar, para posteriormente enviar el nuevo Json. Pongo como hacer este último caso:

Lo primero es usar un plugin de jquery que vi en http://stackoverflow.com que te permite construir un Json a partir de un formulario (distinto al serialize() que lo que devuelve es una cadena con los campos del formulario)

$.fn.serializeObject = 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;
};

Ahora solo hay que extender el Json resultante con los nuevos valores que ya tenia en otro Json

$.ajax({
url     :   ‘action.html’,
method  :   'post',
data    :   $.extend({}, $('#formulario').serializeObject(), JsonNuevosValores)
}).done(function( data ) {
/* lo que tenga que hacer con el resultado*/
});
Dejar un comentario?

0 Comentarios.

Deje un comentario


NOTA - Puede usar estosHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.