Не удается загрузить JSON в jstree из службы WCF (или Как найти, что не так, когда jstree остается в состоянии «загрузка ...») - PullRequest
0 голосов
/ 25 ноября 2010

Я пытаюсь заставить работать jStree (элемент управления jQuery tree) на моей странице ASP.NET (C #).Я использую службу WCF для возврата тестовой строки JSON.

Открытие URL-адреса службы WCF в браузере работает нормально - если перейти по 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 в «вручную» вмой документ. вот так:

"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 {
            };
        }
    }
},

...fails. Jstree отображается как просто слово «загрузка ...» и анимированный gif загрузки. И оно делает попадание в точку останова внутри метода службы WCF (как при просмотре

A: Идея, где я ошибся?

B: Идея Как я узнаю , что не так?, и я не вижу сообщений об ошибках.

Спасибо.

Обновление: решено

Спасибо Микаэлю ЭлиЧтобы указать, что мой сервис должен возвращать XML, а не JSON.

Код службы WCF:

//                                this responseformat bit below fixed it
[WebGet(UriTemplate = "GetTesto", ResponseFormat = WebMessageFormat.Json)]  
[OperationContract]
public Testo GetTesto()     
{
    return new Testo();
}

1 Ответ

1 голос
/ 25 ноября 2010

Может быть глупый вопрос, но вы включили плагин json_data, верно? Как сказал Аконсу, проверяя ответ в таком инструменте, как Firebug.

Мне кажется, что ваша служба WCF не возвращает JSON, а представляет собой ответ XML. Я думаю, что это твоя проблема. Лучше всего, вероятно, изменить службу для возврата JSON. Если вы не можете этого сделать, вы можете добавить функцию успеха и преобразовать строку в JSON с помощью функции $ .parseJSON ()

Надеюсь, это поможет. Но опять же, вы действительно должны начать использовать Firebug или что-то подобное, потому что во многих случаях вам нужно проверить ответ или отладить javascript.

...