0

我正在使用引导树视图来填充层次结构成员数据。 https://github.com/jonmiles/bootstrap-treeview

用于填充树视图的 json 数据示例:

var json = '[' +
                '{' +
                    '"text": "Parent 1",' +
                    '"nodes": [' +
                        '{' +
                            '"text": "Child 1",' +
                            '"nodes": [' +
                                '{' +
                                    '"text": "Grandchild 1"' +
                                '},' +
                                '{' +
                                    '"text": "Grandchild 2"' +
                                '}' +
                            ']' +
                        '},' +
                        '{' +
                            '"text": "Child 2"' +
                        '}' +
                    ']' +
                '},' +
                '{' +
                    '"text": "Parent 2"' +
                '},' +
                '{' +
                    '"text": "Parent 3"' +
                '},' +
                '{' +
                    '"text": "Parent 4"' +
                '},' +
                '{' +
                    '"text": "Parent 5"' +
                '}' +
            ']';

我有一个 ajax 函数,它将通过传递 memberID 获得直接下线。

function getTree2(mid) {
        $.ajax({
            type: "POST",
            url: "../DataServices/ws_member.asmx/GetDirectDownlineByMemberID",
            data: "{'memberID':'" + mid + "'}",
            contentType: "application/json; charset=utf-8",
            success: function (response) {
                var str = '';
                var result = JSON.parse(response.d)
                for (var i = 0; i < result.length; i++) {
                    str += '"text": "' + result[i].Name + '",' +
                          '"nodes": [' +
                         '{';

                    str += getTree2(result[i].ID);

                    str += '}' +
                     ']';
                }
                str += '}' +
                   ']';

                return str;
            },
            dataType: "json"
        });   
    }

但以下行不能返回任何字符串。

str += getTree2(result[i].ID);

如何在 ajax 回调中循环函数 getTree2 以返回字符串?

4

2 回答 2

0

应该传递给树视图的正确格式不是您从 Ajax 调用返回的内容,您应该像以下示例一样解析 json 对象:

let invalid = '{ "bank": "CityBank", "sum": "500" }, { "bank": "WPBank", "sum": "700" }';
let valid = JSON.parse("[" + invalid + "]");

现在您可以毫无问题地将有效变量传递给 treeView。

即将向 JSON 对象添加方括号表示法

于 2020-09-15T10:21:18.967 回答
0

由于 Ajax 调用将在异步线程中处理,因此如果您想取回返回字符串,您应该通过回调传递

function getTree2(mid, callback)

然后在第 23 行:

    return callback(str);

所以要添加新字符串:

getTree2(result[i].ID, function(newStr) { 
    str += newStr;
});
于 2016-10-31T07:19:53.540 回答