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개

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

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

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

로그인
🐛 버그신고