1

我想在 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 查询给出了一些好的结果。

非常感谢您的回答。

4

1 回答 1

1

解释是 JSON 无效。

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

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

当它直接在 javascript 代码中工作时,标签周围也没有引号,但当它作为 loadURL 参数使用 PHP 时不起作用。为此,我们需要一个格式良好的 JSON:

[
{
"label": "node1",
"children": [
{
"label": "child1"
},
{
"label": "child2"
}
]
},
{
"label": "node2",
"children": [
{
"label": "child3"
}
]
}
]
于 2014-05-25T12:17:55.023 回答