gpt4 book ai didi

javascript - c3.generate 不抛出错误

转载 作者:行者123 更新时间:2023-12-03 10:56:06 24 4
gpt4 key购买 nike

我正在使用 c3 + d3 + javascript 在网页中创建折线图。我设法创建了一个在本地运行良好的代码,但是当我将其上传到我的服务器时,代码停止运行。我解释一下这个问题:

问题:上传到服务器时 c3.generate 未抛出错误

JSFiddle:http://jsfiddle.net/xq6wmyvp/10/

var chart;
function initialize(path) {
try {
c3.generate({
bindto: '#chart',
data: {
x: 'label',
url: path,
type: 'line',
},
axis: {
x: {
type: 'categories',
label: {
text: 'days',
},
},
y: {
label: {
text: 'yield',
},
tick: {
format: d3.format(".2%")
}
}
},
});
} catch (err) {
return false;
}
return true;
}
var path1 = 'https://gist.githubusercontent.com/SamMorrowDrums/f571240047c0344a4af8/raw/433eae455570b64edcdc7ece39416b468b612f49/test.csv';
alert(initialize('blabla'));

代码说明:代码(在 fiddle 中)有一个函数,可以使用一些数据用折线图初始化图表。数据的路径作为该函数的变量给出(称为“initialize(path)”)。该函数使用 c3.generate 创建图形。如果数据不可用或不存在,c3.generate 会抛出错误(这在本地有效,但在上传到服务器时无效 - 这就是问题所在)并且函数 (initialize) 返回 false。如果数据存在,则加载图表并“初始化”返回 true。

问题重述:将代码上传到服务器后,即使数据不可用/不存在,函数“initialize(path)”也仅返回“true”。

我不知道如何解决这个问题。你能帮助我吗?感谢您的阅读!

(问题的 Github 链接: https://github.com/masayuki0812/c3/issues/960 )

最佳答案

正如我在评论中所说,c3 在幕后使用 d3.xhr 来检索数据。这是一个异步调用,意味着它在您的 try block 之外。

可能的解决方法包括:

1.) 将其修复在 c3 source code 中在第 1903 行,您会看到错误正在被删除。

2.) 创建 global error handler

3.) 不要使用 c3 的 url 选项。发布自己的d3 xhr请求(以正确的方式处理错误),如果成功,则使用 columns 选项调用 c3.generate。我就是这样做的。

d3.csv("path/to/file.csv", function(error, json) {
if (error){
// handle error properly
return;
}
c3.generate({
...
});
});

关于javascript - c3.generate 不抛出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28262940/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com