자바스크립트 변수 질문 드립니다. (feat. orgChart)
본문
안녕하세요.
orgChart차트를 이용해서 조직도를 만들고 있습니다.
디비에서 회원 데이터를 받아와서 조직도를 출력하려고 하는데요
orgChart에서 샘플로 만든것과 같은 형식으로 데이터를 변수에 담았습니다.
아래가 orgChart에서 샘플로 있던 데이터인데요
var testData = [{id: '1000001', name: '001', parent: '0'},{id: '1000002', name: '002', parent: '1000001'},{id: '1000003', name: '003', parent: '1000001'},{id: '1000004', name: '004', parent: '1000001'},{id: '1000005', name: '005', parent: '1000002'},{id: '1000006', name: '006', parent: '1000002'},{id: '1000007', name: '007', parent: '1000002'},{id: '1000008', name: '008', parent: '1000003'},{id: '1000009', name: '009', parent: '1000003'},{id: '1000010', name: '*** 개인정보보호를 위한 휴대폰번호 노출방지 ***'},{id: '1000011', name: '*** 개인정보보호를 위한 휴대폰번호 노출방지 ***'},{id: '1000012', name: '012', parent: '1000004'},{id: '1000013', name: '013', parent: '1000004'}];
저는 디비에서 회원들의 id와 name, parent를 뽑아 같은 형식으로 변수에 담았습니다.
$sql = "select * from test1 order by idx asc";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
$array_mem[] = "{id: '".$row['id']."', name: '".$row['name']."', parent: '".$row['parent']."'}";
}
$str = implode(',', $array_mem);
$str = "[".$str."]";
위와 같이 하니까 아래와 같이 출력이 됩니다.
[{id: '1000001', name: '001', parent: '0'},{id: '1000002', name: '002', parent: '1000001'},{id: '1000003', name: '003', parent: '1000001'},{id: '1000004', name: '004', parent: '1000001'},{id: '1000005', name: '005', parent: '1000002'},{id: '1000006', name: '006', parent: '1000002'},{id: '1000007', name: '007', parent: '1000002'},{id: '1000008', name: '008', parent: '1000003'},{id: '1000009', name: '009', parent: '1000003'},{id: '1000010', name: '*** 개인정보보호를 위한 휴대폰번호 노출방지 ***'},{id: '1000011', name: '*** 개인정보보호를 위한 휴대폰번호 노출방지 ***'},{id: '1000012', name: '012', parent: '1000004'},{id: '1000013', name: '013', parent: '1000004'}]
기존 샘플에 있던것과 완전히 같은 형식으로 데이터가 변수에 담겨있는데요...문제는 이걸 javascript변수
에 담으면 차트가 안나오네요;;;
$sql = "select * from test1 order by idx asc";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
$array_mem[] = "{id: '".$row['id']."', name: '".$row['name']."', parent: '".$row['parent']."'}";
}
$str = implode(',', $array_mem);
$str = "[".$str."]";
<script type="text/javascript">
var ddd = "<?php echo $str;?>";
//alert(ddd);
//console.log ddd;
var testData = [{id: '1000001', name: '001', parent: '0'},{id: '1000002', name: '002', parent: '1000001'},{id: '1000003', name: '003', parent: '1000001'},{id: '1000004', name: '004', parent: '1000001'},{id: '1000005', name: '005', parent: '1000002'},{id: '1000006', name: '006', parent: '1000002'},{id: '1000007', name: '007', parent: '1000002'},{id: '1000008', name: '008', parent: '1000003'},{id: '1000009', name: '009', parent: '1000003'},{id: '1000010', name: '*** 개인정보보호를 위한 휴대폰번호 노출방지 ***'},{id: '1000011', name: '*** 개인정보보호를 위한 휴대폰번호 노출방지 ***'},{id: '1000012', name: '012', parent: '1000004'},{id: '1000013', name: '013', parent: '1000004'}];
</script>
<script type="text/javascript">
$(function(){
org_chart = $('#orgChart').orgChart({
data: ddd,
showControls: false,
allowEdit: false,
onAddNode: function(node){
log('Created new node on node '+node.data.id);
org_chart.newNode(node.data.id);
},
onDeleteNode: function(node){
log('Deleted node '+node.data.id);
org_chart.deleteNode(node.data.id);
},
onClickNode: function(node){
log('Clicked node '+node.data.id);
}
});
});
// just for example purpose
function log(text){
$('#consoleOutput').append('<p>'+text+'</p>')
}
</script>
data: ddd로 하면 차트가 안나오고 testData로하면 정상적으로 나옵니다....
ddd의 내용도 testData와 동일한데 왜 ddd로 하면 안나오고 testData처럼 해야지 나오는걸까요;;;
!-->!-->!-->!-->답변 2
var ddd = "<?php echo $str;?>";
==>
var ddd = <?php echo $str;?>;
아래처럼 <?php ?>로 감싸도 뭔가 나오나요?
<?php
$sql = "select * from test1 order by idx asc";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)){
$array_mem[] = "{id: '".$row['id']."', name: '".$row['name']."', parent: '".$row['parent']."'}";
}
$str = implode(',', $array_mem);
$str = "[".$str."]";
?>
답변을 작성하시기 전에 로그인 해주세요.