PHP AJAX 배열로 받기
본문
안녕하세요. 제가 PHP와 HTML 이용해서 코드를 작성중인데요.
현재 select box를 이용해서 선택한 값을 AJAX로 넘겨서 배열로 받아오는 형식의 코드를 작성중입니다.
우선 코드는 다음과 같습니다.
<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
<?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개의 값이 있는데,
콘솔창에는 한개의 값만 넘어옵니다.
인터넷에 검색해보니
json_encode(배열)이 array를 JSON으로 변환하는 코드던데, 혹시 이렇게 하는게 아닐까요?
방법을 알려주시면 감사드립니다!
!-->!-->답변 1
$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 );
이렇게 해보세요.
!-->
답변을 작성하시기 전에 로그인 해주세요.