我第一次使用 c#.net 玩 jstree (1.0rc2)+jquery (1.4.2),虽然我已经让它工作了,但有几件事我不明白如何提供数据给我用来填充树的 web 服务的树(使用 ajax 和 json_data 插件)。我希望有更多使用 jstree 经验的人可以提供一些见解。
jstree 配置如下所示:
"json_data": {
"ajax": {
"url": "GetTree.asmx/GetChildren",
"type": "POST",
"contentType": "application/json; charset=utf-8",
"dataType": "json",
"data": function(n) {
var result = "{'id':'" + (n.attr ? n.attr("id").replace("node_", "") : "0") + "'}";
return (result);
}
}
}
GetTree.asmx GetChildren 方法:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml )]
public string GetChildren(string id)
{
List<jsTreeNode> jsTree = new List<jsTreeNode>();
//... (build the tree as needed)
JavaScriptSerializer serializer = new JavaScriptSerializer();
return(serializer.Serialize(jsTree));
}
问题1:所以一切都很好,那么问题是什么?问题是“ResponseFormat = ResponseFormat.Xml”。我挣扎了一段时间才能让它工作,因为当它设置为 ResponseFormat.Json 时它不起作用,这正是我所期望的。在这种情况下,Web 服务或 jQuery 在解析 json 响应时不会报告任何错误,但树会呈现为空。
在查看 Web 服务的 HTML 输出时,我看不出两种方式呈现的内容之间没有区别。我希望有人可以解释为什么这有效(违反直觉)以及为什么它不适用于 ResponseFormat.Json,如果这表明我可能做错了其他事情。
问题 2:一般是 Web 服务还是 Web 处理程序?
无论如何,使用通用 Web 处理程序 (ashx) 会是一种更有效的方法吗?标准 Web 服务与通用 Web 处理程序所需的开销是否存在显着差异?由于我的目标基本上是准确控制输出的内容(并且在 Web 服务中使用 json 数据格式似乎并没有按照我想要的方式工作)我不确定有什么好处(如果有的话)在这里使用 Web 服务,而不是完全剥离它。另一方面,这现在有效,所以也许我应该独自离开。