Código javascript:
Ver original
new Ajax.Request( "datos.jsp", {method: 'post', parameters: {anios: aniosSelect, meses: mesesSelect}, onRequest: function() { //alert('Iniciando Request'); }, onComplete: function() { //alert('Request terminado'); }, onSuccess: function(response) { var datosGrid = response.getHeader("grid").evalJSON(true); for(j = 0; j < tablas.length; j++){ actualizarTabla(tablas[j], datosGrid); } }, onFailure: function() { //alert('Request fallido!'); } });
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
//Respuesta Gson gson = new Gson(); String grid = gson.toJson(tablaGrid); String grafDatosSuma = gson.toJson(tablaGrafDatosSuma); String grafValoresSuma = gson.toJson(tablaGrafValoresSuma); String grafDatosMedia = gson.toJson(tablaGrafDatosMedia); String grafValoresMedia = gson.toJson(tablaGrafValoresMedia); String pivotDatos = gson.toJson(datosS); response.resetBuffer(); response.addHeader("grid", grid); response.addHeader("grafDatosSuma", grafDatosSuma); response.addHeader("grafValoresSuma", grafValoresSuma); response.addHeader("grafDatosMedia", grafDatosMedia); response.addHeader("grafValoresMedia", grafValoresMedia); response.addHeader("pivotDatos", pivotDatos); response.setContentType("application/json"); response.setStatus(response.SC_OK); if (response.isCommitted() == false){ response.flushBuffer(); }
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!