자바스크립트 변수 질문 드립니다. (feat. orgChart) 채택완료
kujira
4년 전
조회 2,280
안녕하세요.
orgChart차트를 이용해서 조직도를 만들고 있습니다.
디비에서 회원 데이터를 받아와서 조직도를 출력하려고 하는데요
orgChart에서 샘플로 만든것과 같은 형식으로 데이터를 변수에 담았습니다.
아래가 orgChart에서 샘플로 있던 데이터인데요
</p>
<p>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: '010', parent: '1000003'},{id: '1000011', name: '011', parent: '1000004'},{id: '1000012', name: '012', parent: '1000004'},{id: '1000013', name: '013', parent: '1000004'}];</p>
<p>
저는 디비에서 회원들의 id와 name, parent를 뽑아 같은 형식으로 변수에 담았습니다.
</p>
<p> $sql = "select * from test1 order by idx asc";
$result = mysql_query($sql);</p>
<p> while($row = mysql_fetch_array($result)){
$array_mem[] = "{id: '".$row['id']."', name: '".$row['name']."', parent: '".$row['parent']."'}";
}
$str = implode(',', $array_mem);
$str = "[".$str."]";</p>
<p>
위와 같이 하니까 아래와 같이 출력이 됩니다.
</p>
<p>[{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: '010', parent: '1000003'},{id: '1000011', name: '011', parent: '1000004'},{id: '1000012', name: '012', parent: '1000004'},{id: '1000013', name: '013', parent: '1000004'}]</p>
<p>
기존 샘플에 있던것과 완전히 같은 형식으로 데이터가 변수에 담겨있는데요...문제는 이걸 javascript변수
에 담으면 차트가 안나오네요;;;
</p>
<p>$sql = "select * from test1 order by idx asc";
$result = mysql_query($sql);</p>
<p> while($row = mysql_fetch_array($result)){
$array_mem[] = "{id: '".$row['id']."', name: '".$row['name']."', parent: '".$row['parent']."'}";
}
$str = implode(',', $array_mem);
$str = "[".$str."]";</p>
<p><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: '010', parent: '1000003'},{id: '1000011', name: '011', parent: '1000004'},{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);
}</p>
<p> });
});</p>
<p> // just for example purpose
function log(text){
$('#consoleOutput').append('<p>'+text+'</p>')
}
</script></p>
<p>
data: ddd로 하면 차트가 안나오고 testData로하면 정상적으로 나옵니다....
ddd의 내용도 testData와 동일한데 왜 ddd로 하면 안나오고 testData처럼 해야지 나오는걸까요;;;
댓글을 작성하려면 로그인이 필요합니다.
답변 2개
채택된 답변
+20 포인트
답변에 대한 댓글 2개
k
kujira
4년 전
이런 어이없는....ㅠㅠ 감사합니다!!
�
엑스엠엘
4년 전
^^
댓글을 작성하려면 로그인이 필요합니다.
4년 전
아래처럼 <?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."]";
?>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
k
kujira
4년 전
네 거긴 당연히 php구문이라 <?php ?>로 감싸져 있습니다. 질문글에는 빠졌네요 죄송합니다..
�
하이바네
4년 전
<script>
<?php
$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'}]";
?>
var ddd = <?=$str?>;
console.log(ddd);
</script>
위와 같이 바꿔보세요. 잘 동작하네요
<?php
$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'}]";
?>
var ddd = <?=$str?>;
console.log(ddd);
</script>
위와 같이 바꿔보세요. 잘 동작하네요
k
kujira
4년 전
감사합니다
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인