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

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

QA

자바스크립트 변수 질문 드립니다. (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."]";

?>

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

위와 같이 바꿔보세요. 잘 동작하네요

답변을 작성하시기 전에 로그인 해주세요.
전체 57
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT