我已經設置了一個Google圖表(組織圖)實現,它接受行列表作爲變量,最終來自PHP。如果我嘗試使用該變量呈現組織結構圖,則會收到錯誤「給出的每一行都必須爲null或數組」。如果在addRows
命令之前輸入alert(userlist)
,則複製該輸出,並將該變量替換爲輸出,一切正常,因此我知道它正在正確接收數據。下面是我到目前爲止有:谷歌圖表錯誤:給出的每一行必須爲空或數組
google.charts.load('current', {packages:["orgchart"]});
google.charts.setOnLoadCallback(drawChart);
function drawChart() {
var data = new google.visualization.DataTable();
data.addColumn('string', 'Name');
data.addColumn('string', 'Manager');
data.addColumn('string', 'ToolTip');
// Pull user information from Drupal
var userlist = Drupal.settings.orgchart.userlist;
// For each orgchart box, provide the name, manager, and tooltip to show.
alert(userlist);
data.addRows([userlist]);
// Create the chart.
var chart = new google.visualization.OrgChart(document.getElementById('org-chart'));
// Draw the chart, setting the allowHtml option to true for the tooltips.
chart.draw(data, {allowHtml:true});
}
同樣地,如果我從alert(userlist)
它的偉大工程的輸出代替用戶列表中data.addRows([userlist]);
。
UPDATE:這裏是原始輸出:
[{v:'CN=My Name,OU=IT,OU=Fesslers,DC=hpsi,DC=local', f:'My Name'}, 'CN=Supervisor Name,OU=Sr. Management,OU=Fesslers,DC=hpsi,DC=local', ''], [{v:'', f:'Another Name'}, '', ''], [{v:'CN=Yet Another,OU=IT,OU=Fesslers,DC=hpsi,DC=local', f:'Yet Another'}, 'CN=My Name,OU=IT,OU=Fesslers,DC=hpsi,DC=local', '']
UPDATE:在PHP中加入創建我的用戶名單變量:
$allusers = entity_load('user');
$userlist = '';
if ($allusers) {
foreach ($allusers as $useritem) {
$dn = '';
$manager = '';
$fullname = '';
if ($useritem->uid > 1) { // Skip user 0 and 1
if (isset($useritem->field_distinguished_name['und']['0']['value'])) {
$dn = $useritem->field_distinguished_name['und']['0']['value'];
}
if (isset($useritem->field_manager_dn['und']['0']['value'])) {
$manager = $useritem->field_manager_dn['und']['0']['value'];
}
if (isset($useritem->field_full_name['und']['0']['value'])) {
$fullname = $useritem->field_full_name['und']['0']['value'];
}
($userlist == '') ? $userlist = '[[{v:\'' . $dn . '\', f:\'' . $fullname . '\'}, \'' . $manager . '\', \'\']' : $userlist .= ', [{v:\'' . $dn . '\', f:\'' . $fullname . '\'}, \'' . $manager . '\', \'\']';
}
}
if ($userlist != '') {
$userlist .= ']';
}
}
啊,對不起 - 意味着這樣做。我更新了原始帖子。如果我正確讀取示例數據,它似乎包含了所有必要的內容。 –
你的變量用戶列表是如何定義的?可能它是一個數組數組,'var userlist = [[foo,bar],[bar,foo]]',如果是這種情況,那麼你會試圖在一個數組數組上調用'addRows'數組('addRows([['foo','bar'],['bar','foo']]])'); 我的第二個猜測是你沒有在drupal.settings.orgchart.userlist中正確格式化所有東西。在這一點上可以分享如何格式化輸出嗎? 一切都按預期對我工作... https://jsfiddle.net/heennkkee/6q1qto0a/2/1/ –
我已經嘗試了幾個選擇:'var userlist = Drupal.settings.orgchart.userlist;','' var userlist = new Array(Drupal.settings.orgchart.userlist;'。如果我在你的JS小提琴中做了你所做的事情(靜態地將數據添加到var userlist),它可以工作 - 但是如果我只是按原樣使用變量,它不會,我會在PHP中添加用戶列表變量。 –