-1

ASP.NET(C#)ページでjStree(jQueryツリーコントロール)を機能させようとしています。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自体は正常に機能します-同じJSONをdocument.readyの「手動」に配置すると次のようになります。

"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": "#" }
}}]},

それらのノードを含むツリーが表示されます。

しかし、2つを組み合わせる:

"json_data": {
    "ajax": {
        "url": "GetTree",
        "data": function (n) {
            return {
            };
        }
    }
},

...失敗します。jstreeは、「loading...」という単語とアニメーション化されたloadinggifとして表示されます。そして、それWCFサービスメソッド内のブレークポイントにヒットします(それを参照するのと同じように)。

A:私が間違っているという考えはありますか?

B:何が悪いのかをどうやって見つけるのか?jstreeのドキュメントは役に立ちませんでした、そして私はエラーメッセージを見ることができません。

ありがとう。

更新:解決済み

私のサービスはJSONではなくXMLを返す必要があることを指摘してくれたMikaelEliassonに感謝します。

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 を返すようにサービスを変更することです。それができない場合は、success 関数を追加して、関数 $.parseJSON() を使用して文字列を JSON に変換できます。

それが役立つことを願っています。しかし、応答を検査したり JavaScript をデバッグしたりする必要がある場合が多いため、Firebug などの使用を開始する必要があります。

于 2010-11-25T05:13:57.087 に答える