Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/01/2013, 06:20
geoscape
 
Fecha de Ingreso: enero-2013
Mensajes: 2
Antigüedad: 11 años, 3 meses
Puntos: 0
Pregunta JQuery: Enviar un formulario con un gran número de campos mediante AJAX

Buenos días,

estoy empezando a meterme con esto de la programación web, (hasta ahora sólo me dedicaba a diseñar) y me estoy encontrando con un problema a la hora de guardar los datos. Supongo que será algún concepto que no domino, pero seguro que vosotros lo domináis a la perfección, por eso disculpad si la pregunta es de lo más elemental.

El caso es que tengo que generar un formulario con 12 preguntas (tipo combo: SELECT de 4 posibles valores cada una) para cada uno de los subdepartamentos de una empresa. El número de subdepartamentos depende del departamento elegido en un primer paso. En consecuencia, si sólo hay un subdepartamento, sólo habrá 12 campos y si hay 10, habrá 120 campos.

El caso es que estoy empleando el método $.ajax() para enviar la información del cliente a la base de datos y obtener una respuesta para informar al usuario de si los datos se han guardado correctamente o no.

Los campos a enviar los nombro "IDsubdepartamento_IDpregunta", por lo que el "chorizo" que obtengo finalmente es algo del tipo: &1_0=2&1_1=3&1_3=1... etc

El código del submit es:

Código:
//	Setup call
		$.ajax({
		  type: 'GET',
		  url: 'survey_actions.php?action=save',
		  data: { parameters: Base64.encode($("#mySurvey").serialize()) },
		  dataType: 'text',
		  beforeSend:function(){
		  	//	Load wait panel
		  	loader("on");
		  },
		  success:function(response){
[...]
Como véis, los valores de las respuestas los serializo y los codifico en Base64 para aliviar un poco la longitud de la cadena enviada, pero aun así, sigo teniendo un problema, que es que cuando el número de campos es elevado, "parameters" no llega completo al método "save" del servidor.

Me imagino que esta forma de enviar los datos es una burrada, pero no tengo ni idea de como estructurarlo, teniendo en cuenta que debo enviar todos los datos que aparecen en pantalla, sin ignorar las respuestas no puntuadas.

Desde ya, muchas gracias por vuestra ayuda.