无法在 jsTree 中通过 HTTP 加载 XML 文件

Unable to load an XML file via HTTP in jsTree

本文关键字:HTTP 加载 XML 文件 jsTree      更新时间:2023-09-26

我又在问这个问题。我有这段代码,它基于 XML 文件加载一个 jsTree:

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

当文件与我的脚本位于同一服务器上时,它可以工作。我的树加载。

"url": "jstree.xml"  

但是当我这样做时:

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

我一直在页面上无限加载。它是相同的XML文件,当输入浏览器时,我可以手动访问该XML。

有人见过jsTree的这个问题吗?有解决方法吗?

我通过创建服务器端脚本并在 jquery 中调用脚本文件来解决此问题。效果很好。

很确定这是一个跨域限制。 您无法跨域获取 XML。 因此,解决方法是服务器端代理解决方案,例如

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

更多细节在这里

或者使用 yahoo pipes 将远程 xml 数据转换为 jsonp。 查看jstree文档,似乎您可以传递一个jquery ajax对象,希望该对象可以设置为执行jsonp。 或者手动获取 jsonp 响应并将其作为 json 对象传递给 jstree。