2012-08-15 7 views
4

Je pose cette question à nouveau. J'ai ce morceau de code qui charge un jsTree basé sur un fichier XML:Impossible de charger un fichier XML via HTTP dans jsTree

$("#div").jstree({ 
    "xml_data" : { 
     "ajax" : { 
      "url": "http://192.168.101.1/xml/jstree.xml" 
     }, 
     "xsl" : "nest" 
    }, 
    "plugins" : ["themes", "xml_data", "ui","types"] 

Lorsque le fichier est sur le même serveur que mon script, cela fonctionne. Mon arbre se charge.

"url": "jstree.xml" 

Mais quand je fais ceci:

"url": "http://192.168.101.1/xml/jstree.xml" 

Je continue à obtenir que le chargement infini sur la page. Il s'agit du même fichier XML et je peux accéder manuellement à ce fichier XML manuellement lorsqu'il est entré dans mon navigateur.

Quelqu'un a vu ce problème avec jsTree? Y at-il un travail autour?

+1

Les messages en double sont déconseillés: http://stackoverflow.com/questions/11957646/building-jstree-menu-based-on-xml Veuillez fournir un violon sur le post précédent. – MMeah

+0

@MMeah, je ne peux pas utiliser jsfiddle du travail. Ma question est très simple. Est-il possible de faire url: fichier "http // data.xml" dans le plugin jstree. Je ne vois aucune référence à cela. J'ai essayé de le faire et de ne pas travailler. – user1471980

+0

Quelle est l'erreur que vous obtenez? Erreur Javascript? Où se trouve votre XML lorsque vous n'êtes pas sur le serveur? Cela pourrait-il être un problème interdomaines? – mahatmanich

Répondre

0

Je résous le problème en créant un script côté serveur et en appelant le fichier script dans ma jquery. Ça marche bien.

+0

bon pour vous :-) – mahatmanich

0

Assurez-vous qu'il s'agit d'une restriction entre domaines. Vous ne pouvez pas obtenir le domaine croisé XML. Donc, le travail autour est soit une solution de proxy côté serveur par exemple

<?php readfile($_GET['url']) ?> 

more details here

Ou utilisez yahoo pipes pour convertir vos données XML à distance en jsonp. En regardant les docs jstree il semble que vous pouvez passer un objet jquery ajax qui, je l'espère, pourrait être celui qui est configuré pour faire jsonp. Ou récupérez manuellement une réponse jsonp et transmettez-la à jstree en tant qu'objet json.

Questions connexes