채택완료

반복문과 배열 질문드립니다.

2021-02-19 (금) 16:58:21 3,721

mysqli_set_charset($conn,"utf8");
$select_query = "SELECT it_name FROM g5_shop_item";
$result = mysqli_query($conn, $select_query);

$cnt = 0;
 $resultArr = array();
while($r = mysqli_fetch_assoc($result)){
$resultArr[] = $r;
$cnt ++;
}

이렇게 해서 현재 DB에서 가져온상태입니다.

<script type="text/javascript">

//<![CDATA[

$(function() {
    var arr = [];
    for(var j=0; j<"<?php echo $cnt; ?>"; j++){
        arr.push("<?php echo $resultArr["j"]['it_name']; ?>");
        console.log(j);
    }

    console.log(arr);
    var availableCity = arr;
    $("#sch_str").autocomplete({
        source: availableCity,
        select: function(event, ui) {
            console.log(ui.item);
        },
        focus: function(event, ui) {
            return false;
            //event.preventDefault();
        }
    });
});
//]]>
</script>

자바스크립트에서 사용하려고하는데


        arr.push("<?php echo $resultArr["j"]['it_name']; ?>");
 

이부분 이 계속 공백으로 들어갑니다.

        arr.push("<?php echo $resultArr["0"]['it_name']; ?>");

이렇게할경우

3731834642_1613721416.7516.png

제대로 배열이생성됩니다.

        arr.push("<?php echo $resultArr["+j+"]['it_name']; ?>");

이렇게도 해보았지만 되지않았습니다

그래서 j를 console.log로 찍어보았는데

3731834642_1613721446.7831.png

잘 찍히는것까지 확인되었습니다.

왜 배열에 넣을때 공백으로 들어가는지를 모르겠습니다.

답변 1개 / 댓글 1개

채택된 답변
+20 포인트

자바스크립트의 특성인 비동기 실행때문으로 보입니다.

php에서 가져온 배열을 해당 방법으로 하기보다는

Copy
var arr = <?php echo json_encode($resultArr)?>;

형태로 선언하시고 console.log(arr)을 찍어보세요.

해당 값이 jons 오브젝트 배열 형태로 선언이 됩니다. 

코드쪽이나 직관적인 면에서 해당 방법이 더 간단하고 편할거라 생각되네요.

답변에 대한 댓글 1개

감사합니다 자바스크립트에 특성이 따로 존재하나보군요

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