Передача объекта JavaScript в ajax - PullRequest
0 голосов
/ 27 января 2012

Я пытаюсь использовать dynatree, и его можно инициализировать так:

var treeData = 
[
    {title: "group1", key:"182" },

    {title: "group2", key:"181" },

    {title: "group3", key:"189" , isFolder:true, children: 
        [
            {title: "group3_1", key:"301" }
        ]
    }
];

$(".groupContainer").dynatree({
    checkbox: false, 
    selectMode: 2,
    children: treeData
});

Обратите внимание, что объекты в treeData имеют значения, на которые ссылаются имена, которые не заключены в кавычки.

Теперь я хочу сделать это:

var treeData = [];
$.getJSON('/getTreeData.do', function(data){
    treeData = data;
    $(".groupContainer").dynatree({
        checkbox: false, 
        selectMode: 2,
        children: treeData
    });
});

Однако jquery 1.7.1 (и 1.5.2 и 1.4.2) вызывает ошибки синтаксического анализа, когда я передаю содержимое treeData с getTreeData.do.Я считаю, что это потому, что спецификация для JSON требует, чтобы ключи и значения были строками и заключались в кавычки.Но если я процитирую ключи и значения, то dynatree нарисует дерево с единственным узлом, помеченным как «ноль».

Есть ли способ сделать это, или мне придется использовать функции createNode() и addNode() dynatree несколько раз после получения данных дерева?

В связанной заметке,как законный объект JavaScript не является законным JSON?

1 Ответ

0 голосов
/ 27 января 2012

Я изменил тип ответа на «text / plain» и запустил javascript's eval() в ответе.Ну и дела, почему я не думал об этом раньше?

...