我准备了一个 JavaScript 可视化代码,可视化通过简单的 HTTP 服务器进行工作,因为所有必要的数据都在一个文件夹中。但是,如果需要从数据库(现在是 JSON 文件)获取数据输入,我就无法让它工作。
我已将以下示例数据(csv 文件)加载到 Teradata 数据库中。
|x1. . . . . |y1. . . . .|z1. . . . . |x2. . . . . |y2. . . . .|z2. . . . . |
|-0.858927763|0.121607854|-0.067815693|-0.100387679|0.142522011|-0.085021698|
|0.759678102 |1.670849337|0.389506443 |-0.841098362|0.745253687| 0.07724956 |
|1.617835159 |0.671663712|0.676541754 |-0.086900337|1.162505997| 0.822100957|
|1.878302821 |0.985942302|1.756579077 |-0.418153016|2.471764891| 0.234493023|
teradata工具的文档指出,要访问数据,index.html代码必须具有消息处理程序,使用:
$(window).on('message', handler)
并且可以使用以下方式在处理程序内部访问数据:
event.originalEvent.data
在我的本地服务器中,从 csv 获取数据的 JavaScript 代码如下所示:
<script>
Plotly.d3.csv('3d-scatter.csv', function(err, rows){
function unpack(rows, key) {
return rows.map(function(row)
{ return row[key]; });
}
</script>
我只是想知道应该使用什么代码来获取和转换从 event.originalEvent.data 处理程序中提取的 JSON 数据(以前是“3d-scatter.csv”,现在是数据库中的 JSON 数据)。
<小时/>我发现包含数据的处理程序。
在“消息”事件处理程序下:可以在此路径中找到数据(.handler.elem.visJson.data)
因此,当我调用 visJson.data 时,控制台会输出一个数组。
最佳答案
您可以使用浏览器Fetch API 。 fetch()
全局函数可以从网络获取资源,返回 HTTP 响应的 Promise
。
像这样使用它:
fetch("http://host/endpoint.json")
.then(res => res.json())
.then(data => {
// data is an array of object,
// iterate over it and create an in-memory CSV
// or verify if Plotly.d3 can be fed directly this array
})
关于javascript - 如何从数据库中获取JSON数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40833432/