【问题标题】:use a php SESSION string for d3.js tree JSON instead of .json file对 d3.js 树 JSON 使用 php SESSION 字符串而不是 .json 文件
【发布时间】:2018-02-25 13:25:01
【问题描述】:

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

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

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

但这似乎不起作用。字符串必须没问题,因为我可以将其复制到文件中并使用以下代码加载功能树:

 var treedatajson = "filtered_tree.json";

为什么 JSON.parse() 不能那样工作?我该怎么做才能让它运行?

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

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

【问题讨论】:

    标签: javascript json d3.js


    【解决方案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";
    

    【讨论】:

    • 抱歉,出了点问题... 再说一遍:它是这个例子之后的树:gist.github.com/robschmuecker/7880033 下一行是创建树及其例程的函数:treeJSON = d3.json (treedatajson, function(error, treeData) { 说实话,我不知道是只引用文件/路径还是直接使用json....我会尝试改变一些东西来检查... .
    • 你是我的英雄 :D 我用解析的 JSON 字符串覆盖了函数中的 treeData,效果很好。感谢您的链接:)
    • 好的,您对 .php 的想法可能也适用...但我认为在我的情况下,没有附加文件的解决方案会更好。
    猜你喜欢
    • 2013-07-11
    • 2023-03-15
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 2012-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多