jquery — создание альтернативного JSON для jstree с использованием переполнения стека

Я пытаюсь сгенерировать альтернативный код JSON для jstree в моем контроллере PHP.

Я создаю то, что выглядит как правильные данные, однако 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

0

Решение

Генерируемые вами данные выглядят хорошо (при условии, что вы видите это в своих инструментах разработки как ответ на вызов AJAX, который делает jsTree).

Возможно, вы захотите проверить, все ли заголовки в порядке — действительно ли он служит JSON? Вы также можете попробовать добавить кодировку на всякий случай:

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

Я вижу, вы уже пытаетесь заставить jQuery обрабатывать ответ как JSON независимо от заголовков, но используйте "dataType" вместо "datatype",

Если это не работает — поделитесь, пожалуйста, тем, что вы видите на сетевой панели консоли разработчика, — заголовками и ответом на AJAX-вызов jsTree.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]