来自URL的jqtree和JSON加载

时间:2014-05-24 13:26:10

标签: php jquery json jqtree

我想在jqTree中从PHP中的服务器加载JSON数据。 我试图像这样使用“data-url”:

$(function() {
$('#tree1').tree({
    //data: data,
    dataUrl: 'menu_content.ajax.php',
    autoOpen: true,
...

和menu_content.ajax.php生成的JSON是:

[
    {
        label: 'node1',
        children: [
            {
                label: 'child1'
            },
            {
                label: 'child2'
            }
        ]
    },
    {
        label: 'node2',
        children: [
            {
                label: 'child3'
            }
        ]
    }
]

当我将这个JSON直接放在javascript代码中时,它可以正常工作,但它无法使用PHP / JSON方式。 jqtree下载文件中的示例使用了更复杂的mockjax,如手册所述。

重装功能也不起作用:

$('#tree1').tree('loadDataFromUrl', 'menu_content.ajax.php');

我试图在PHP中使用两个不同的标头:

header('Content-Type: text/html; charset=utf-8');
or
header('Content-Type: application/json');

但它无论是否有效。

我确定我做错了什么,但我看不出是什么。

我们可以在javascript代码中直接看到带有JSON的应用程序: http://naeco.free.fr/wfr/editionMenu/menuWilly_JSON-in-file.html 和PHP JSON在这里: http://naeco.free.fr/wfr/editionMenu/menuWilly.html

Firebug说一切正常:在控制台中,没有错误,并且GET查询给出了一些正常的信息。

非常感谢您的回答。

1 个答案:

答案 0 :(得分:1)

解释是JSON无效。

同样重要的是要注意版本:

var data = [ { label: 'node1', children: [ { label: 'child1' }, { label: 'child2' } ] }, { label: 'node2', children: [ { label: 'child3' } ] } ];

直接在javascript代码中工作,也没有引用标签,但在PHP作为loadURL参数时不起作用。为此,我们需要一个结构良好的JSON:

[
{
"label": "node1",
"children": [
{
"label": "child1"
},
{
"label": "child2"
}
]
},
{
"label": "node2",
"children": [
{
"label": "child3"
}
]
}
]