2026, 새로운 도약을 시작합니다.

PHP AJAX 배열로 받기 채택완료

안녕하세요. 제가 PHP와 HTML 이용해서 코드를 작성중인데요.

현재 select box를 이용해서 선택한 값을 AJAX로 넘겨서 배열로 받아오는 형식의 코드를 작성중입니다.

우선 코드는 다음과 같습니다.

Copy
<select name = "LCategory" id = "LCategory" class="form-control" onchange="selectLCategory();">       <!--대-->

            <option value=''>선택</option>

            <?php

                     $Lquery = "SELECT DISTINCT LargeCategory FROM tblCategory ORDER BY LargeCategory DESC";

                     $Lresult = sqlsrv_query($conn, $Lquery);

 

                     while ($Ldata = sqlsrv_fetch_array($Lresult, SQLSRV_FETCH_ASSOC)) {

             ?>

                     <option value = "<?php echo $Ldata["LargeCategory"]?>"><?php echo $Ldata["LargeCategory"]?></option>

            <?php

                      }

            ?>

</select>

 

<script>

            function selectLCategory() {

                     var L = document.getElementById("LCategory");

                     var Large = L.options[L.options.selectedIndex].value;

 

                     $.ajax({

                             url: "selectValue.php",

                             method:"POST",

                             data:{Large:Large},

                             dataType:"json",

                             success:function(data) {

                                 console.log(data.MiddleCategory);

                             }

                     })

            }

</script>

// selectValue.php

Copy
<?php

    $DB_IP = "";

    $DB_ID = "";

    $DB_PWD = "";

    $DB_NAME = "";

    $DB_ConnectInfo = array("UID"=>$DB_ID, "PWD"=>$DB_PWD, "Database"=>$DB_NAME, "CharacterSet" => "UTF-8");

 

    date_default_timezone_set('Asia/Seoul');

   

    $connect = sqlsrv_connect($DB_IP, $DB_ConnectInfo);

 

    if(isset($_POST["Large"]))  

    {

        $query = "SELECT DISTINCT MiddleCategory

                    FROM tblCategory

                    WHERE MiddleCategory IS NOT NULL

                        AND LargeCategory = '".$_POST["Large"]."'";  

 

        $result = sqlsrv_query($connect, $query);

        $row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC);

       

        echo json_encode($row);

    }

?>

위와 같이 코드를 작성한 후에 console.log로 확인해봤는데 DB연결은 잘 됐으나 한개의 값만 받아옵니다.

DB에서 위의 쿼리를 입력했을 때 아래와 같이 2개의 값이 있는데,

1935365004_1652836483.2482.png

콘솔창에는 한개의 값만 넘어옵니다.

1935365004_1652836535.5988.png

인터넷에 검색해보니

json_encode(배열)이 array를 JSON으로 변환하는 코드던데, 혹시 이렇게 하는게 아닐까요?

방법을 알려주시면 감사드립니다!

답변 1개

채택된 답변
+20 포인트
Copy
$result = sqlsrv_query($connect, $query);
$json_array = array();
 while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){

     $json_array[] = $row;

}

echo json_encode($json_array );

이렇게 해보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

정말 감사합니다! 덕분에 한가지 더 배워갑니다! :)

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

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

로그인
🐛 버그신고