Intentaré explicar lo mejor posible mi problema: No me funciona el FusionCharts cuando intento ejecutarlo desde una pagina generada con AJAX
trabajo con ASP Clasico, las página se crea en 3 niveles:
1.- En el nivel 1 tengo los filtros de datos y un iframe
2.- El nivel 2 se encuentra en el iframe, aca tengo una pagina asp que en el body tiene una funcion que llama al contenido de la pagina mediante AJAX
3.- En el nivel 3 tengo la pagina ASP que genera el contenido del nivel 2.
El problema se produce al generar los contenidos del nivel 2 mediante ajax (llamando al nivel 3), uso la API Prototype y la implemento en un codigo como el que sigue:
Código:
Todo el cuento que tengo es que en el contenido de la página necesito mostrar unos gráficos pero no funcionan, los gráficos no aparecen sino la palabra "Graph"...function getHTMLContent(form, destino) { var parametros = Form.serialize($(form)); new Ajax.Updater( destino, 'resultados.asp', { method: 'post', parameters: parametros }); } ... <body onLoad="getHTMLContent('grafico', 'div-contenido')"> ...
Ahora bien, si muestro el contenido de la pagina directamente en el nivel 2 sin pasar por AJAX entonces los gráficos aparecen sin ningún problema. A mi se me imagina que es un problema de ejecución, por que los gráficos son llamados mediante objetos javascript, entonces pienso que de pronto estoy intentando llamar a un objeto desde otro objeto y quizás eso no se pueda. Pero sólo son conjeturas por que en realidad desconozco el origen del error
De todas formas, FusionCharts genera sus gráficos mediante el siguiente codigo:
Código:
Como se darán cuenta, este codigo se ejecuta dentro del Ajax.Updater() por lo que creo que por ese lado va el problema.<!-- START Script Block for Chart acertividadJefe --> <div id='acertividadJefeDiv' align='center'> Chart. </div> <script type="text/javascript"> //Instantiate the Chart var chart_acertividadJefe = new FusionCharts("FusionCharts/FCF_Column3D.swf", "acertividadJefe", "880", "350"); //Provide entire XML data using dataXML method chart_acertividadJefe.setDataXML("<graph caption='% ACERTIVIDAD POR JEFATURA' xAxisName='Supervisor' yAxisName='Porcentaje Alcanzado' showNames='0' decimalPrecision='0' formatNumberScale='0'><set name='Alguna persona' value='50' color='AFD8F8' /></graph>"); //Finally, render the chart. chart_acertividadJefe.render("acertividadJefeDiv"); </script> <!-- END Script Block for Chart acertividadJefe -->
El otro tema es que el informe es bastante pesado y se debe demorar unos 5-10 segundos en aparecer la información completa, por eso la idea era obtenerlo mediante AJAX para poder mostrar al usuario algo de retroalimentación mientras se termina de generar el informe.
Espero que alguien haya podido realizar algo como esto y pueda ayudarme a solucionar el problema, de todas maneras cualquier comentario o duda sera bienvenido y profundamente agradecido.
Saludos cordiales,
Rodrigo