如何处理JqPlot中的无数据情况

10

有没有最佳的方法来处理 JqPlot 中的“无数据”情况?

假设我正在使用 ajax 调用消耗 JSON 数据,最终没有数据可用,例如:

[['North'][0],['South'][0],['East'][0],['West'][0]]

这非常有帮助。如果没有数据可呈现,JQPlot是否应该返回一个空图而不是抛出异常?对我来说,这是一种有效的状态,而不是错误... - Stefan
3个回答

14

我在我的AJAX函数中始终有一个条件检查,用于检查没有结果。如果没有结果,则设置图表为空。因此,var data = [[null]]应该这样做,其中datajQuery.jqplot('chart', data, {})的参数。 data的值可能取决于图表的类型,因此我对线条、柱状和饼状图进行了测试,它能正常工作。

你也可以选择隐藏图例和其他部分。但仅设置data和图例对我来说已经足够了。


2

var data = [null];会在控制台中触发错误并停止JS脚本的执行。更好的解决方案是使用以下代码。

var data = [''];
jQuery.jqplot('chart', data, {});

这将在FF/Chrome/IE控制台中打印任何后续的图形和/或继续JS脚本的执行而不产生错误。 :-)

我不确定这对你是如何工作的 - 它将在 https://github.com/jqPlot/jqPlot/blob/1870d3beddd96dc62b948196c4eb9dfd5833e763/src/jqplot.core.js#L2063 中失败 $ .isArray(data [0])== false || data [0] .length == 0 - flaviut

2
在我的情况下,与Rahi的答案相反(也许是缺少null周围的双括号引起的问题),意味着我同意Boro; 这段代码可以运行:var data = [[null]]; ,而这段代码:var data = ['']; 会生成一个错误,无论我有多少个图表或只有一个没有数据。我正在运行jqPlot 1.0.9 版本。我得到的错误是:jqPlot脚本中的条件导致了“未指定数据”的错误。
if (0 == this.noDataIndicator.show)
                    throw new Error("No data specified");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接