我试图让 jStree(jQuery 树控件)在我的 ASP.NET(C#)页面中工作。我正在使用 WCF 服务返回 JSON 的测试字符串。
在浏览器中打开 WCF 服务 URL 可以正常工作- 如果我转到 URL (http://localhost/website/GetTree) 我会得到 JSON(看起来就像在浏览器中打开 XML,带有语法突出显示和可折叠选项卡)
<string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">{"attr": { "id": 2, "rel": "default" }, "data": "A node", "children": [ { "data": "Child 1", "attr": { "id": 43, "rel": "document" } }, {"data": "Child 2", "attr": { "id": 25, "rel": "document"} } ] }</string>
jstree 本身工作正常- 如果我在 document.ready 中“手动”放入相同的 JSON,如下所示:
"json_data": {
"data":
[{
"attr": { "id": 2, "rel": "default" },
"data": "A node",
"children":
[{
"data": "Child 1", "attr": { "id": 43, "rel": "document" }
},{
"data": "Child 2", "attr": { "id": 25, "rel": "document"}
}]},{
"attr": { "id": "li.node.id", "rel": "document" },
"data": {
"title": "Long format demo",
"attr": { "href": "#" }
}}]},
我得到了出现在其中的那些节点的树。
但是,将两者结合起来:
"json_data": {
"ajax": {
"url": "GetTree",
"data": function (n) {
return {
};
}
}
},
...失败。jstree 仅显示为“正在加载...”这个词和一个动画加载 gif。它确实在 WCF 服务方法中遇到了一个断点(就像浏览它一样)。
A:知道我哪里出错了吗?
B: 知道我如何找出问题所在吗?jstree 文档没有帮助,而且我看不到任何错误消息。
谢谢。
更新:已解决
感谢 Mikael Eliasson 指出我的服务必须返回 XML 而不是 JSON。
WCF 服务代码隐藏:
// this responseformat bit below fixed it
[WebGet(UriTemplate = "GetTesto", ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
public Testo GetTesto()
{
return new Testo();
}