私は 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 に設定すると機能しなかったため、これを機能させるのにしばらく苦労しました。これは私が期待するものです。そのような状況では、json 応答を解析するときに Web サービスまたは jQuery によってエラーは報告されませんが、ツリーは空になります。
Web サービスの HTML 出力を見ると、どちらの方法でレンダリングされたものにも違いは見られませんでした。これが機能する理由 (直感に反して) と、ResponseFormat.Json で機能しない理由を誰かが説明できることを期待していました。
質問 2:一般的に、Web サービスまたは Web ハンドラーですか?
とにかく、汎用 Web ハンドラー (ashx) を使用すると、より効率的な方法になりますか? 標準の Web サービスと一般的な Web ハンドラーで必要なオーバーヘッドに大きな違いはありますか? 私の目標は基本的に出力されるものを正確に制御することなので (そして、Web サービスで json データ形式を使用しても、とにかく思い通りに動作していないようです)、もしあれば、どのような利点があるのか わかりません。完全に削除するのではなく、ここで Web サービスを使用します。一方、これは今ではうまくいっているので、たぶん私は十分に放っておくべきです.