Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problemilla prototype Ajax

Estas en el tema de Problemilla prototype Ajax en el foro de Frameworks JS en Foros del Web. Hola, estoy generando una aplicacioncilla web y tengo un pequeño problema, hago la peticion Ajax que es la siguiente: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código javascript : Ver ...
  #1 (permalink)  
Antiguo 18/09/2009, 02:07
 
Fecha de Ingreso: diciembre-2007
Mensajes: 124
Antigüedad: 16 años, 5 meses
Puntos: 2
Problemilla prototype Ajax

Hola, estoy generando una aplicacioncilla web y tengo un pequeño problema, hago la peticion Ajax que es la siguiente:

Código javascript:
Ver original
  1. new Ajax.Request(
  2.                     "datos.jsp",
  3.  
  4.                     {method: 'post',
  5.  
  6.                     parameters: {anios: aniosSelect, meses: mesesSelect},
  7.  
  8.                     onRequest: function()
  9.                     {
  10.                             //alert('Iniciando Request');
  11.                     },
  12.  
  13.                     onComplete: function()
  14.                     {
  15.                             //alert('Request terminado');
  16.                     },
  17.  
  18.                     onSuccess: function(response)
  19.                     {
  20.                         var datosGrid = response.getHeader("grid").evalJSON(true);
  21.                         for(j = 0; j < tablas.length; j++){
  22.                             actualizarTabla(tablas[j], datosGrid);
  23.                         }
  24.                     },
  25.  
  26.                     onFailure: function()
  27.                     {
  28.                             //alert('Request fallido!');
  29.  
  30.                     }
  31.             });

Como observais, traigo un objeto JSON desde un JSP, hasta ahi bien, en el datos.jsp trabajo los datos y en un determinado momento convierto el array resultante a JSON y lo meto en el response:

Código jsp:
Ver original
  1. //Respuesta
  2.     Gson gson = new Gson();
  3.     String grid = gson.toJson(tablaGrid);
  4.     String grafDatosSuma = gson.toJson(tablaGrafDatosSuma);
  5.     String grafValoresSuma = gson.toJson(tablaGrafValoresSuma);
  6.     String grafDatosMedia = gson.toJson(tablaGrafDatosMedia);
  7.     String grafValoresMedia = gson.toJson(tablaGrafValoresMedia);
  8.     String pivotDatos = gson.toJson(datosS);
  9.  
  10.     response.resetBuffer();
  11.     response.addHeader("grid", grid);
  12.     response.addHeader("grafDatosSuma", grafDatosSuma);
  13.     response.addHeader("grafValoresSuma", grafValoresSuma);
  14.     response.addHeader("grafDatosMedia", grafDatosMedia);
  15.     response.addHeader("grafValoresMedia", grafValoresMedia);
  16.     response.addHeader("pivotDatos", pivotDatos);
  17.     response.setContentType("application/json");
  18.     response.setStatus(response.SC_OK);
  19.    
  20.     if (response.isCommitted() == false){
  21.         response.flushBuffer();
  22.     }

Como podeis ver uso GSON, bien a parte del datosGrid, en el response meto otras cosas que necesito, ya que hago 4 llamadas AJAX por el momento, mas tarde intentare unificarlas. El objeto array me lo convierte perfectamente a JSON sin problema, esta comprobado con un println en el log del server, pero luego en el onSucces de la peticion AJAX me devuelve un null, que es lo raro.

Y lo mas raro, es que esto no pasa siempre, sospecho que es por tamaño, ¿Hay algun tamaño maximo para el response? ¿O un numero maximo de headers?

A ver que me podeis decir...

Gracias de antemano!

Última edición por JuaNiNNaio; 18/09/2009 a las 03:34
  #2 (permalink)  
Antiguo 18/09/2009, 09:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Problemilla prototype Ajax

En efecto el problema es que en los headers no puedes enviar mucha información, para eso es mejor que envies en el cuerpo de la respuesta todo el JSON y luego en Prototype lo dejes como:
Código Javascript:
Ver original
  1. var json = response.responseText.evalJSON(true);

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:15.