我正试图在我的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');
});
})
", yiiwebVIEW::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
您正在生成的数据看起来很好(前提是您在开发工具中看到的是对jsTree进行的AJAX调用的响应)。
您可能想检查所有的头是否都正常——它真的是JSON吗?你也可以尝试添加字符集以防万一:
header('Content-Type: application/json; charset=UTF-8');
我看到您已经试图强制jQuery将响应视为JSON,而不考虑标头,但使用"dataType"
而不是"datatype"
。
如果这不起作用——请分享您在开发人员控制台的net面板中看到的内容——jsTree对AJAX调用的头部和响应。