jsTree获取所选节点的id作为数组
jsTree getting id of the selected node as array
我正在使用 jsTree 插件在我的 codeigniter web 应用程序中生成树菜单。我的任务是获取所选节点的 ID 并获取节点的一些详细信息并将其显示在同一页面中。所以我使用了jstree的changed
事件。这是我的代码:
<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();
}
但是当我获取所选节点的 ID 并使用 ajax 将其传递给我的控制器函数时,返回的数据显示错误:
Php fatal error: Array to string conversion
当我检查控制台中的 ajax post 错误时,它显示:
Error Number: 1054
Unknown column 'Array' in 'where clause'
SELECT *, tab_relations
.relation
, E2
.name
AS parentname
FROM tab_members
JOIN tab_relations
ON tab_relations
.relation_id
= tab_members
.relation_id
LEFT OUTER JOIN tab_members
AS E2
ON E2
.member_id
= tab_members
.parent_id
WHERE tab_members
.family_id
= Array
Filename: D:/xampp/htdocs/abc/admin/system/database/DB_driver.php
我使用了 console.log(id) 结果显示:
我认为数组来自:
var id = data.changed.selected;
这将返回一个 array.So 我怎样才能只获得节点的 ID?谁能帮帮我?
由于 data.changed.selected
似乎 return 包含 id 作为第一个元素的数组,您需要使用以下方法访问 id:
var id = data.changed.selected[0];
现在 id
将包含实际 ID 而不是数组。
我正在使用 jsTree 插件在我的 codeigniter web 应用程序中生成树菜单。我的任务是获取所选节点的 ID 并获取节点的一些详细信息并将其显示在同一页面中。所以我使用了jstree的changed
事件。这是我的代码:
<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();
}
但是当我获取所选节点的 ID 并使用 ajax 将其传递给我的控制器函数时,返回的数据显示错误:
Php fatal error: Array to string conversion
当我检查控制台中的 ajax post 错误时,它显示:
Error Number: 1054
Unknown column 'Array' in 'where clause'
SELECT *,
tab_relations
.relation
,E2
.name
ASparentname
FROMtab_members
JOINtab_relations
ONtab_relations
.relation_id
=tab_members
.relation_id
LEFT OUTER JOINtab_members
ASE2
ONE2
.member_id
=tab_members
.parent_id
WHEREtab_members
.family_id
= ArrayFilename: D:/xampp/htdocs/abc/admin/system/database/DB_driver.php
我使用了 console.log(id) 结果显示:
我认为数组来自:
var id = data.changed.selected;
这将返回一个 array.So 我怎样才能只获得节点的 ID?谁能帮帮我?
由于 data.changed.selected
似乎 return 包含 id 作为第一个元素的数组,您需要使用以下方法访问 id:
var id = data.changed.selected[0];
现在 id
将包含实际 ID 而不是数组。