jsTree получение идентификатора выбранного узла в виде массива - PullRequest
0 голосов
/ 12 декабря 2018

Я использую плагин jsTree для создания древовидного меню в своем веб-приложении codeigniter.Моя задача - получить идентификатор выбранного узла, получить некоторые сведения об узле и отобразить его на той же странице.Поэтому я использовал changed событие jstree.Вот мой код:

    <script type="text/javascript">
var url="<?php echo base_url();?>";
$(document).ready(function () {
$('#html').jstree({
"check_callback" : true,
'core' : {
'data' : {
"url" : url+"Applications/getfamilytree",
"dataType" : "json" // needed only if you do not supply JSON headers
}
},
'plugins' : ['state','changed','wholerow']
}).on("changed.jstree", function (e, data) {
var id = data.changed.selected;
console.log(id);
callAjax(id);

})

});
function callAjax(id)
{
$.ajax({
url: url+"Applications/populatefamilymenu",
dataType: 'json',
type: 'POST',
data: {id: id},
success: function(data){
console.log(data);
},
error: function(jqXHR, exception){
console.log(jqXHR.responseText);
}
});
}
</script>

контроллер:

    public function populatefamilymenu()
{
$id = $this->input->post('id');
$result = $this->Family_model->getfamilyMembersDetails($id);
echo json_encode($result);  
}

Модель

public function getfamilyMembersDetails($id)
{
$this->db->select('*,tab_relations.relation,E2.name AS parentname');
$this->db->from('tab_members');
$this->db->join('tab_relations', 'tab_relations.relation_id = tab_members.relation_id');
$this->db->join('tab_members AS E2', 'E2.member_id = tab_members.parent_id','left outer');
$this->db->where('tab_members.family_id', $id);
$query = $this->db->get();
return $query->result();
}

Но когда я получаю идентификатор выбранного узла и передаю его моему контроллеруФункция, использующая ajax, возвращает данные об ошибке:

Фатальная ошибка Php: преобразование массива в строку

Когда я проверил сообщение об ошибке ajax в консоли, его отображение:

Номер ошибки: 1054

Неизвестный столбец «Массив» в «выражении where»

SELECT *, tab_relations. relation, E2. name AS parentname ОТ tab_members СОЕДИНЕНИЕ tab_relations ВКЛ tab_relations. relation_id = tab_members. relation_id ВЛЕВО НАРУЖНОЕ СОЕДИНЕНИЕ tab_members КАК E2 ВКЛ E2. member_id = tab_members. parent_id ГДЕ tab_members. family_id = Массив

Имя файла: D: /xampp/htdocs/abc/admin/system/database/DB_driver.php

Я использовал console.log (id), и результат показывает:

enter image description here

Я думаю, что массив исходит из:

var id = data.changed.selected; 

это возвращает массив. Так как я могу получить только идентификатор узла?Может кто-нибудь, пожалуйста, помогите мне?

1 Ответ

0 голосов
/ 12 декабря 2018

Поскольку data.changed.selected, кажется, возвращает массив, содержащий идентификатор в качестве первого элемента, вам необходимо получить доступ к идентификатору, используя:

var id = data.changed.selected[0];

Теперь id будет содержать фактический идентификатор вместо массива.

...