Я пытаюсь установить источник данных json для дерева FuelUX. Я создал файл php, который echos json_encoded массив, и результат выглядит примерно так:
[{"name": "South Africa", "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, }); });
Пожалуйста, помогите, если вы знаете, что мне не хватает или что-то не так, поскольку в настоящее время ничего не возвращается.
Ваша реализация не считывает данные так, как должна – если вы хотите, чтобы это сработало, вам нужно изменить несколько вещей:
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"}}] }]