테스트 사이트 - 개발 중인 베타 버전입니다

자바스크립트 변수 질문 드립니다. (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 포인트
var ddd = "<?php echo $str;?>";

==>

 

var ddd = <?php echo $str;?>;
로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

k
kujira
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>

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

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

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

로그인