使用php为jstree生成备用JSON

时间:2015-04-07 11:48:41

标签: php jquery ajax json jstree

我正在尝试在我的PHP控制器中为jstree生成生成备用JSON代码。

我正在创建看起来像正确数据的内容,但是,jstree不会显示它。

我的javascript看起来像这样:

$this->registerJs("
    $(function() {

        $('#statustree').jstree({ 
            'core' : 
            {
                'data' : 
                {
                    'datatype' : 'json',
                    'url' : '/myaccount/buildstatustree',
                }
            }
        });

        $('#statustree').on('loaded.jstree', function() 
        {
            $('#statustree').jstree('open_all');
        });
    })
", \yii\web\VIEW::POS_READY);

我的php看起来像这样:

    // convert to JSON format for jstree

    $tree = array();

    $parent = new stdClass();
    $parent->id = 'P1';
    $parent->parent = '#';
    $parent->text = $username;
    $tree[] = $parent;

    $student1 = new stdClass();
    $student1->id = 'S1';
    $student1->parent = 'P1';
    $student1->text = 'Poly';
    $tree[] = $student1;

    $student1 = new stdClass();
    $student1->id = 'S2';
    $student1->parent = 'P1';
    $student1->text = 'Bob';
    $tree[] = $student1;

    // convert to json and send
    header('Content-type: application/json');
    return json_encode( $tree );

我的控制器被调用并返回一个如下所示的字符串:

[
    {"id":"P1","parent":"#","text":"user2"},
    {"id":"S1","parent":"P1","text":"Poly"},
    {"id":"S2","parent":"P1","text":"Bob"}
]

调用器旋转时旋转器旋转,但旋转器消失,我的树不显示......

我怀疑我没有正确地形成我的备用JSON响应,但我没有尝试任何工作....

由于 -John

1 个答案:

答案 0 :(得分:0)

您生成的数据看起来很好(假设您在开发工具中看到的是对jsTree所做的AJAX调用的响应)。

您可能想检查所有标头是否正常 - 它是否真的用作JSON?您也可以尝试添加字符集以防万一:

header('Content-Type: application/json; charset=UTF-8');

我发现您已经尝试强制jQuery将响应视为JSON而不管标头,但使用"dataType"代替"datatype"

如果这不起作用 - 请分享您在开发人员控制台的网络面板中看到的内容 - 标题以及对AJS调用jsTree的响应。