首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用AJAX获取的JSON数据填充JSTree

用AJAX获取的JSON数据填充JSTree
EN

Stack Overflow用户
提问于 2013-06-04 16:28:58
回答 2查看 45K关注 0票数 12

我试图用从服务获得的JSON数据填充JSTree (这称为ajax)。但是,我在jquery.jstree.js文件中得到的“既不是数据也不是ajax设置提供的错误”。因此,JSTree只显示一个加载gif。

AJAX代码(编辑以尝试将json设置为局部变量测试,然后返回测试)

代码语言:javascript
运行
复制
function getJSONData() {
    var test;
    $
            .ajax({
                async : true,
                type : "GET",
                url : "/JavaTestService/rs/TestService/MyFirstTestService?languageCode=en_US&version=2",
                dataType : "json",

                success : function(json) {
                    test = json;
                },

                error : function(xhr, ajaxOptions, thrownError) {
                    alert(xhr.status);
                    alert(thrownError);
                    test = "error";
                }
            });
    return test;
}

JSTree代码

代码语言:javascript
运行
复制
var jsonData = getJSONData();
createJSTrees(jsonData);

function createJSTrees(jsonData) {
        $("#supplierResults").jstree({
            "json_data" : {
                "data" : jsonData
            },
            "plugins" : [ "themes", "json_data", "ui" ]
        });

经过一些调试后,我发现当传递给jsonData方法时,createJSTrees是未定义的。我是否在Ajax代码中正确地检索了该数据?提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-04 16:37:14

我以前还没有测试过您的方法,您可以直接将数据参数提供给json_data插件,所以我无法提供这个场景的答案。

但是,由于您使用AJAX调用来获取数据,所以不能将AJAX调用提供给JSTree并让它自己处理调用吗?下面是我如何在代码中配置AJAX调用:

代码语言:javascript
运行
复制
        (...)
        'json_data': {
            'ajax': {
                'url': myURL,
                'type': 'GET',
                'data': function(node) {
                    return {
                        'nodeId': node.attr ? node.attr("id") : ''
                    };
                }
            },
            'progressive_render': true,
            'progressive_unload': false
        },
        (...)
票数 1
EN

Stack Overflow用户

发布于 2013-06-04 16:54:41

jsonData未定义,因为getJSONData()不返回值。除非为$.ajax调用完成后返回的getJSONData()分配一个局部变量,否则不能依赖于$.ajax成功处理程序的返回值。但是您需要这样的东西,它还具有异步性的好处:

代码语言:javascript
运行
复制
<script type="text/javascript">    

$(function() {
    $.ajax({
        async : true,
        type : "GET",
        url : "/JavaTestService/rs/TestService/MyFirstTestService?languageCode=en_US&version=2",
        dataType : "json",    

        success : function(json) {
            createJSTrees(json);
        },    

        error : function(xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(thrownError);
        }
    });
});    

function createJSTrees(jsonData) {
    $("#supplierResults").jstree({
        "json_data" : {
            "data" : jsonData
        },
        "plugins" : [ "themes", "json_data", "ui" ]
    });
}    

</script>
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16922984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档