Javascript 将php会话字符串用于d3.js树JSON而不是.JSON文件

Javascript 将php会话字符串用于d3.js树JSON而不是.JSON文件,javascript,json,d3.js,Javascript,Json,D3.js,只要使用.JSON文件中的JSON数据,我就有一个很好的d3.js-tree。 但现在,我想让客户有机会在某些方面对树进行个性化。因此,对我来说,使用会话保存相应的JSON字符串并将该会话变量加载到树脚本中似乎是合乎逻辑的 因此,我像这样使用window.SESSION并将字符串解析为JSON var treedatajson = JSON.parse(window.SESSION.filtered_tree); 但这似乎不起作用。字符串必须是ok,因为我可以将其复制到一个文件中,并使用以下

只要使用.JSON文件中的JSON数据,我就有一个很好的d3.js-tree。 但现在,我想让客户有机会在某些方面对树进行个性化。因此,对我来说,使用会话保存相应的JSON字符串并将该会话变量加载到树脚本中似乎是合乎逻辑的

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

 var treedatajson = JSON.parse(window.SESSION.filtered_tree);
但这似乎不起作用。字符串必须是ok,因为我可以将其复制到一个文件中,并使用以下代码加载一个正常工作的树:

 var treedatajson = "filtered_tree.json";
为什么JSON.parse()不能这样工作?我该怎么做才能让它运转起来

有什么想法吗?提前谢谢


如果有不清楚的地方或需要更多的上下文代码,请告诉我。

类似于
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

对不起,出了点问题。。。这里再次说明:这是本例后面的树:下一行是用于创建树及其例程的函数:treeJSON=d3.json(treedatajson,function(error,treeData){老实说,我不知道它是只引用文件/路径还是直接使用json….我会尝试进行更改以检查….这可能有助于你成为我的英雄:D我用解析的json字符串覆盖函数中的treeData,效果非常好。感谢链接:)好的,您对.php的想法可能也适用……但我认为在我的情况下,不使用传统文件的解决方案会更好。
var treedatajson = "filtered-tree.php";