javascript - 在 WebViewer 中的 FileMaker for D3 中加载 JSON 文件

标签 javascript json d3.js filemaker

我正在尝试在 FileMaker 解决方案中实现 D3 图形和图表。我一直在正确加载 JSON 文件以在 Web 查看器中显示的 D3 代码中使用。

我正在将所有 JS 库加载到全局变量中($$LIB.D3.JS、$$LIB.JQUERY.JS 等)。然后我将 HTML 代码放置在布局上(给出对象名称,即 html)。 Web 查看器抓取 HTML 代码(来自布局上的文本框)和 JS 代码(来自全局变量)来呈现页面。这一切都很好。 (我正在使用这里详细介绍的方法:https://www.youtube.com/watch?v=lMo7fILZTQs)

但是,我的 D3 代码使用 getJSON() 函数来获取 JSON、解析数据并创建可视化。我无法找到从 FileMaker 中将 JSON 文件作为文件获取的方法。我可以将 JSON 文件的内容放入 FileMaker 变量中并将其输入 HTML,但随后我将无法使用 getJSON()。我必须重做 D3 代码才能从 JS 变量获取数据并解析该变量的数据。

有没有办法加载 JSON 文件,以便 FileMaker 可以使用它在 WebViewer 中正确呈现可视化效果。

最佳答案

您有两个选择。

1. 如您所提到的,将 JSON 计算为 HTML。您有权更改使用 d3 加载 JSON 的方式。但它并不难。当您从磁盘加载 JSON 时,使用类似 d3.json('/data.json', callback) 的内容您只需加载 json 然后将其交给回调函数即可。如果 JSON 位于 HTML 页面中,类似于 var embeddedJSON您可以直接使用 embeddedJSON 调用回调。就像

callback (embeddedJSON)

您的代码可能看起来更像这样。

d3.json('/data.json', function(data){
   // bunch of d3 code
})

本例中的回调是一个匿名函数。你可以像这样改变它。

var render = function(data){
   // bunch of d3 code
})
// then call render with your json variable that you embedded into the html
render ( embeddedJSON )

这样就可以了。

2.将html页面导出到temp目录,并将包含数据的json文件导出到其旁边。然后使用 file://url 显示 html。在这种情况下,您可以使用 d3.json(/data.json, callback )这也能正常工作。

每种方法都有其优点和缺点,但它们都有效。

关于javascript - 在 WebViewer 中的 FileMaker for D3 中加载 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32030880/

相关文章:

javascript - D3 Y 轴刻度不可见

javascript - jquery 跟踪更改并在输入元素中添加突出显示

javascript - jQuery '.click(callback)' 阻止默认事件

GoJs 的 Php 数据库格式 json

android - 在另一个 JSON 对象中访问一个 JSON 对象

D3.js:在具有长格式数据的多系列折线图中的现有线上绘制点

javascript - 将文本添加到我的栏的末尾 - D3

javascript - 使用 AngularJS,我可以使用 json 数据生成输入并插入到 dom 中吗?

javascript - 无法在 WebPack 中导出 API

javascript - 按特定的给定顺序对 JSON 数组进行排序