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

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

QA

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

답변 2

본문

안녕하세요.

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>

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

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 57
© SIRSOFT
현재 페이지 제일 처음으로