Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Highcharts时出现JavaScript错误_Javascript_Jquery_Highcharts - Fatal编程技术网

使用Highcharts时出现JavaScript错误

使用Highcharts时出现JavaScript错误,javascript,jquery,highcharts,Javascript,Jquery,Highcharts,我有一个奇怪的问题,希望你能帮我解决 我在一个开发网站上运行--我使用一个简单的表单允许用户输入数据 在同一页上,输入数据后会显示Highchart 数据输入表单有非常简单的基于jQuery的代码段,例如表单验证、最大字符数计数器等 发生的情况是,当数据库中有图表数据时,图表会正确绘制,剩余的JS代码段会按预期工作,您可以尝试输入新的数据点 但是如果数据库中没有数据(因此没有显示Highchart),那么我的所有JS代码段都会停止工作 在Firebug控制台上,当没有数据形成图表时,我会出现以下

我有一个奇怪的问题,希望你能帮我解决

我在一个开发网站上运行--我使用一个简单的表单允许用户输入数据

在同一页上,输入数据后会显示Highchart

数据输入表单有非常简单的基于jQuery的代码段,例如表单验证、最大字符数计数器等

发生的情况是,当数据库中有图表数据时,图表会正确绘制,剩余的JS代码段会按预期工作,您可以尝试输入新的数据点

但是如果数据库中没有数据(因此没有显示Highchart),那么我的所有JS代码段都会停止工作

在Firebug控制台上,当没有数据形成图表时,我会出现以下错误:

jb is null
function n(m,h){kc=ya(a.title,m);tc=ya...play:""});Aa.body.appendChild(Qb)}Tc=
highcharts.js (line 47)
在Chrome上,另一个错误显示为

Uncaught TypeError: Cannot set property 'innerHTML' of null
d.d.extend._Deferred.f.resolveWith         jquery.min.js:16
d.d.extend.ready                           jquery.min.js:16
d.c.addEventListener.A
同样,当我输入第一个数据点并形成图表时,这些错误就会消失

有人知道发生了什么吗?当Highchart为空时,我如何让我的JS工作


非常感谢任何指点。谢谢

我有这个问题。我必须用document.ready围绕highChart创建代码

$(document).ready({
   chart = new Highcharts.Chart({ //my cool chart 
   });
});

好的,这个错误再次出现,这是因为我上面的评论并没有真正解决它

罪魁祸首是:如果您有一个为图表生成数据的模型恰好返回了一个空数组(假设它是一个新用户,并且她还没有向数据库中添加任何数据),那么这个空数组将传递给控制器,然后控制器将空数组传递给具有Highcharts的视图

将空数组传递给包含Highcharts的视图时,Highcharts将运行,但找不到要注入图表的元素,因为视图中还有一个条件,即如果没有数据,则删除了容器

如果没有放置图表的位置,Highcharts将返回一个
innerHTML
错误,该错误可能会破坏您剩余的javascript(我的案例)

这里的解决方案与JS无关,但实际上是在我的控制器中放入一个条件,该条件将是伪代码:

if model that generates chart data returns empty array
    don't generate view containing Highcharts
else
    generate view containing Highcharts

这样做不仅可以很好地防止错误,还可以在没有数据的情况下减少运行Highcharts的开销。

对我来说,问题是在包含Highcharts之前我没有包含jQuery

<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/highcharts-more.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>

抛出错误:

未捕获类型错误:无法读取未定义(匿名函数)@highcharts.js:313(匿名函数)@highcharts.js:315(匿名函数)@highcharts.js:331的属性“addEvent”

未捕获的TypeError:n.getOptions不是函数(匿名函数)@highcharts more.js:8(匿名函数)@highcharts more.js:55

未捕获的TypeError:无法读取未定义(匿名函数)@export.js:9(匿名函数)@export.js:24的属性“fireEvent”


但是,如果我先包含jQuery,它就没有了。

如果没有数据,数据库会返回什么?如果(WeHaveData){drawChart(WeHaveData);}@标记,数据库是空的,并且没有返回我能看到的任何东西(但我有JS问题)——如果我手动向数据库添加一些数据,那么一切运行正常——你认为这可能是某种冲突吗?很难说没有html或代码,如果由于某种原因,如果数据源返回
null
或其他原因,则highchart的行为可能不正确。如果您能给出一个示例,说明js在有数据和无数据的情况下的外观,可能会有更多帮助。如果我们能平局的话better@mark谢谢-我试过一些小提琴,但它们很管用。。。没有错误-很难重现这种行为,因此我将拆除所有的JS并重新构建,以找出它在哪里崩溃。我的web模板正在初始化同一个jQuery插件(fancybox)的两个实例,我用它打开一个按钮触发的模式。一旦我修正了highcharts错误就消失了是的。。我敢打赌这段代码是在加载dom之前执行的。我用过这段代码。这确实是罪魁祸首。谢谢