이전 목록 다음
채택완료

자바스크립트 변수 질문 드립니다. (feat. orgChart)

2021-05-18 (화) 11:15:53 2,456

안녕하세요.

orgChart차트를 이용해서 조직도를 만들고 있습니다.

디비에서 회원 데이터를 받아와서 조직도를 출력하려고 하는데요

orgChart에서 샘플로 만든것과 같은 형식으로 데이터를 변수에 담았습니다.

아래가 orgChart에서 샘플로 있던 데이터인데요

Copy
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'}];

저는 디비에서 회원들의 id와  name, parent를 뽑아 같은 형식으로 변수에 담았습니다. 

Copy
$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."]";

위와 같이 하니까 아래와 같이 출력이 됩니다.

Copy
[{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'}]

기존 샘플에 있던것과 완전히 같은 형식으로 데이터가 변수에 담겨있는데요...문제는 이걸 javascript변수

에 담으면 차트가 안나오네요;;;

Copy
$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: '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);
            }

        });
    });

    // just for example purpose
    function log(text){
        $('#consoleOutput').append('<p>'+text+'</p>')
    }
</script>

data: ddd로 하면 차트가 안나오고 testData로하면 정상적으로 나옵니다....

ddd의 내용도 testData와 동일한데 왜 ddd로 하면 안나오고 testData처럼 해야지 나오는걸까요;;;

|

답변 2개 / 댓글 5개

채택된 답변
+20 포인트
2021-05-18 (화) 11:49:33
var ddd = "<?php echo $str;?>";

==>

var ddd = <?php echo $str;?>;

답변에 대한 댓글 2개

이런 어이없는....ㅠㅠ 감사합니다!!
^^
2021-05-18 (화) 11:40:14
아래처럼 <?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개

네 거긴 당연히 php구문이라 <?php ?>로 감싸져 있습니다. 질문글에는 빠졌네요 죄송합니다..
<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>

위와 같이 바꿔보세요. 잘 동작하네요
감사합니다

답변을 작성하려면 로그인이 필요합니다.