Gracias de antemano por su ayuda.
Tengo una página que representa un puñado de gráficos, pero parece que estoy experimentando un problema de alcance solo de vez en cuando.
Tengo una serie de funciones de jQuery que hice para representar tipos específicos de gráficos en función de las opciones pasadas, cada una contiene una llamada AJAX para solicitar el conjunto de datos adecuado en función de las opciones enviadas al llamar a la función de gráfico en el contenedor de gráficos.
Algunos de los gráficos están emparejados con un segundo gráfico cuyas opciones están determinadas por la respuesta JSON de la respuesta de llamada AJAX de los primeros gráficos. El gráfico emparejado se representa en una devolución de llamada en el primer gráfico, después de que se activa el éxito de AJAX:.
La mayoría de las veces esto funciona perfectamente bien, pero ocasionalmente aparece el error "TypeError: $(...).lineChart is not a function". El primer gráfico de barras se representa cada vez, pero de vez en cuando ya no se puede acceder a la función de gráfico de líneas que está definida en el mismo archivo que el gráfico de barras.
Cualquier retraso que agregue al código parece solucionar el problema. El problema no existe cuando uso el depurador y puedo detectar el error y volver a llamar a la función lineChart después de un tiempo de espera que parece funcionar también.
No sé por qué la función ya no estaría disponible a veces y lo que parece al azar.
Me disculpo por no pegar el código exacto. Hay bastantes comentarios y nombres de variables/funciones que no puedo publicar aquí.
Gracias.
$.fn.barChart = function (options, callback) { $.ajax(options["url"], { method: "POST", type: "json", data: options.data, success: function (response) { // ..render this chart .. var optionsForNewChart = {}; // ..generate new options to respond with base on response JSON callback(optionsForNewChart); } }); }; $.fn.lineChart = function (options) { $.ajax(options["url"], { method: "POST", type: "json", data: options.data, success: function (response) { // ..render this chart .. } }); } $("#barChart1").barChart({ url: "https://...", data: { //post data } }, function (response) { $('#lineChart1').lineChart(response); }); $("#barChart2").barChart({ url: "https://...", data: { //post data } }, function (response) { $('#lineChart2').lineChart(response); }); $("#barChart3").barChart({ url: "https://...", data: { //post data } }, function (response) { $('#lineChart3').lineChart(response); });Adjunte su código en: $(document).ready(function(){ //YOUR CODE GOES HERE }); Esto resolverá el problema de que la función no se carga.