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*/ });
0 Comentarios.