J'essaye de faire fonctionner jStree (jQuery tree control) dans mon ASP.NET (C#) page. J'utilise un service WCF pour renvoyer une chaîne de test de JSON.Impossible de charger JSON dans un jstree à partir du service WCF (ou Comment trouver ce qui ne va pas quand jstree reste sur "loading ...")
Ouverture de l'URL du service WCF dans le navigateur fonctionne très bien - Si je vais à l'URL (http: // localhost/site/GetTree) je reçois le JSON (regarde comme l'ouverture XML dans le navigateur, avec la mise en évidence de la syntaxe et thingys onglet pliable)
<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 lui-même fonctionne très bien - si je mets le même JSON dans "manuellement" dans mon document.ready comme ceci:
"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": "#" }
}}]},
Je reçois l'un arbre ppearing avec ces noeuds dedans.
Mais, en combinant les deux:
"json_data": {
"ajax": {
"url": "GetTree",
"data": function (n) {
return {
};
}
}
},
... échoue. Le jstree apparaît comme le mot "chargement ..." et un gif de chargement animé. Et atteint un point d'arrêt à l'intérieur de la méthode de service WCF (tout comme la navigation pour le faire).
A: Une idée où je me suis trompé?
B: Une idée comment je découvre quel est le problème? La documentation de jstree n'était d'aucune aide, et je ne vois aucun message d'erreur.
Merci.
Mise à jour: résolu
Merci à Mikael Eliasson de remarquer que mon service doit être de retour XML et non JSON.
service WCF code-behind:
// this responseformat bit below fixed it
[WebGet(UriTemplate = "GetTesto", ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
public Testo GetTesto()
{
return new Testo();
}
Je commencerais par vérifier la demande Web. le verbe, et le corps, etc. dans firebug par exemple. – akonsu