2

我正在尝试为 FuelUX 树设置一个 json 数据源。我创建了一个回显 json_encoded 数组的 php 文件,结果如下所示:

[{"name":"南非","type":"folder","additionalParameters":{"id":"1"}}]

下面是javascript片段:

jQuery(document).ready(function (e) {
    var DataSourceTree = function (options) {
        this.url = options.url;
    }

    DataSourceTree.prototype.data = function (options, callback) {
        var self = this;
        var $data = null;

        var param = null

        if (!("name" in options) && !("type" in options)) {
            param = 0; //load the first level  
        } else if ("type" in options && options.type == "folder") {
            if ("additionalParameters" in options && "children" in options.additionalParameters) {
                param = options.additionalParameters["id"];
            }
        }

        if (param != null) {
            $.ajax({
                url: this.url,
                data: 'id=' + param,
                type: 'POST',
                dataType: 'json',
                success: function (response) {
                    if (response.status == "OK")
                        callback({
                            data: response.data
                        })
                },
                error: function (response) {
                    console.log(response);
                }
            })
        }
    };

    $('#location-tree').tree({
        dataSource: new DataSourceTree({
            url: '/do_json/get_location_tree'
        }),
        multiSelect: false,
    });
});

如果您知道我遗漏了什么或做错了什么,请提供帮助,因为目前没有任何东西被退回。

4

1 回答 1

0

您的实现没有按应有的方式读取数据 - 如果您希望它工作,您必须更改一些内容:

DataSourceTree.prototype.data = function (options, callback) {
    var self = this;
    var $data = null;

    var param = null

    if (!("name" in options) && !("type" in options)) {
        param = 0; //load the first level  
    } else if ("type" in options && options.type == "folder") {
        if ("additionalParameters" in options && "children" in options.additionalParameters) {
            param = options.additionalParameters["id"];
        }
    }

    if (param != null) {
        $.ajax({
            url: this.url,
            data: 'id=' + param,
            type: 'POST',
            dataType: 'json',
            success: function (response) {
                callback(response)
            },
            error: function (response) {
                console.log(response);
            }
        })
    }
};

查看 ajax 调用的更改成功函数。

这是因为您当前的实现等待这种格式的数据:

[{status: "OK", data: [{"name":"South Africa","type":"folder","additionalParameters":{"id":"1"}}] }]
于 2014-04-14T14:42:32.447 回答