-1

我试图让 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();
}
4

1 回答 1

1

可能是一个愚蠢的问题,但您启用了 json_data 插件,对吧?正如 akonsu 所说,在 Firebug 等工具中检查响应。

在我看来,您的 WCF 服务没有返回 JSON,而是返回 XML 响应。我认为这是你的问题。最好的可能是将服务更改为返回 JSON。如果你不能这样做,你可以添加成功函数并使用函数 $.parseJSON() 将字符串转换为 JSON

我希望这会有所帮助。但是你真的应该开始使用 Firebug 或类似的东西,因为很多时候你需要检查响应或调试 javascript。

于 2010-11-25T05:13:57.087 回答