PHP AJAX 배열로 받기 채택완료
dhdl52
3년 전
조회 2,075
안녕하세요. 제가 PHP와 HTML 이용해서 코드를 작성중인데요.
현재 select box를 이용해서 선택한 값을 AJAX로 넘겨서 배열로 받아오는 형식의 코드를 작성중입니다.
우선 코드는 다음과 같습니다.
</p>
<p><select name = "LCategory" id = "LCategory" class="form-control" onchange="selectLCategory();"> <!--대--></p>
<p> <option value=''>선택</option></p>
<p> <?php</p>
<p> $Lquery = "SELECT DISTINCT LargeCategory FROM tblCategory ORDER BY LargeCategory DESC";</p>
<p> $Lresult = sqlsrv_query($conn, $Lquery);</p>
<p> </p>
<p> while ($Ldata = sqlsrv_fetch_array($Lresult, SQLSRV_FETCH_ASSOC)) {</p>
<p> ?></p>
<p> <option value = "<?php echo $Ldata["LargeCategory"]?>"><?php echo $Ldata["LargeCategory"]?></option></p>
<p> <?php</p>
<p> }</p>
<p> ?></p>
<p></select></p>
<p> </p>
<p><script></p>
<p> function selectLCategory() {</p>
<p> var L = document.getElementById("LCategory");</p>
<p> var Large = L.options[L.options.selectedIndex].value;</p>
<p> </p>
<p> $.ajax({</p>
<p> url: "selectValue.php",</p>
<p> method:"POST",</p>
<p> data:{Large:Large},</p>
<p> dataType:"json",</p>
<p> success:function(data) {</p>
<p> console.log(data.MiddleCategory);</p>
<p> }</p>
<p> })</p>
<p> }</p>
<p></script></p>
<p>
// selectValue.php
</p>
<p><?php</p>
<p> $DB_IP = "";</p>
<p> $DB_ID = "";</p>
<p> $DB_PWD = "";</p>
<p> $DB_NAME = "";</p>
<p> $DB_ConnectInfo = array("UID"=>$DB_ID, "PWD"=>$DB_PWD, "Database"=>$DB_NAME, "CharacterSet" => "UTF-8");</p>
<p> </p>
<p> date_default_timezone_set('Asia/Seoul');</p>
<p> </p>
<p> $connect = sqlsrv_connect($DB_IP, $DB_ConnectInfo);</p>
<p> </p>
<p> if(isset($_POST["Large"])) </p>
<p> {</p>
<p> $query = "SELECT DISTINCT MiddleCategory</p>
<p> FROM tblCategory</p>
<p> WHERE MiddleCategory IS NOT NULL</p>
<p> AND LargeCategory = '".$_POST["Large"]."'"; </p>
<p> </p>
<p> $result = sqlsrv_query($connect, $query);</p>
<p> $row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC);</p>
<p> </p>
<p> echo json_encode($row);</p>
<p> }</p>
<p>?></p>
<p>
위와 같이 코드를 작성한 후에 console.log로 확인해봤는데 DB연결은 잘 됐으나 한개의 값만 받아옵니다.
DB에서 위의 쿼리를 입력했을 때 아래와 같이 2개의 값이 있는데,

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

인터넷에 검색해보니
json_encode(배열)이 array를 JSON으로 변환하는 코드던데, 혹시 이렇게 하는게 아닐까요?
방법을 알려주시면 감사드립니다!
댓글을 작성하려면 로그인이 필요합니다.
답변 1개
채택된 답변
+20 포인트
3년 전
</p>
<pre>
<code> $result = sqlsrv_query($connect, $query);
$json_array = array();
while($row = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC)){</code></pre>
<p> $json_array[] = $row;</p>
<p><code>}</code></p>
<p><code>echo json_encode($json_array );</code></p>
<p>
이렇게 해보세요.
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
d
dhdl52
3년 전
정말 감사합니다! 덕분에 한가지 더 배워갑니다! :)
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인