使用php SESSION字符串表示d3.js树JSON而不是.json文件

时间:2018-02-25 13:25:01

标签: javascript json d3.js

只要我使用来自.json文件的JSON数据,我就有一个很好的工作d3.js-tree。 但是现在,我想让客户有机会以某种方式个性化树。因此,对我来说,使用SESSION来保存相应的JSON-String并将此SESSION变量加载到我的树形脚本中似乎是合乎逻辑的。

因此,我像这样使用window.SESSION并将字符串解析为JSON。

 var treedatajson = JSON.parse(window.SESSION.filtered_tree);

但这似乎不起作用。该字符串必须正常,因为我可以将其复制到一个文件中并使用以下代码加载一个正常运行的树:

 var treedatajson = "filtered_tree.json";

为什么JSON.parse()不能这样工作?我该怎么办才能让它运转起来?

有什么想法吗?提前谢谢!

让我知道是否有不清楚的事情,或者您需要更多的上下文代码。

1 个答案:

答案 0 :(得分:1)

var treedatajson = "filtered_tree.json";中看起来像是在传递文件名时,在var treedatajson = JSON.parse(window.SESSION.filtered_tree);中你传递的是json数据。您使用treedatajson的下一行是什么?您可能正在寻找文件名而不是解析数据。

...或者你应该创建一个php会端点,以json的形式提供会话数据......比如

<?php
// filtered-tree.php
session_start()
header('Content-Type: application/json');
echo json_encode($_SESSION['TREE']); // or whatever the key is

然后在js

var treedatajson = "filtered-tree.php";