php ajax 로 배열 값 받는 방법 문의합니다.
본문
[ajax 문서]
function ajaxItemLoad(id) {
var frm = document.itemList;
frm.ca_id.value = id;
$.ajax({
url:'./ajax.itemload.php',
type:'post',
datatype:'json',
data:$(frm).serialize(),
success:function(data){
var items = [];
$.each(data, function(key,val) {
items[key] = val;
alert($items[key]);
});
}
})
}
[php 문서]
<?php
include_once('./_common.php');
$data = array();
$ca_id = $_POST['ca_id'];
$sql = " select * from g5_shop_item where ca_id LIKE '{$ca_id}%' or ca_id2 LIKE '{$ca_id}%' or ca_id3 LIKE '{$ca_id}%' ";
$result = sql_query($sql, true);
$cnt = 0;
while( $row = mysqli_fetch_array($result) ) {
$data[$cnt][it_name] = $row['it_name'];
$cnt++;
}
echo json_encode($data);
exit;
?>
위 파일들을 동작시키면
jquery-1.11.3.min.js:2
Uncaught TypeError: Cannot use 'in' operator to search for 'length' in [{"it_name":"\ucef4\ud4e8\ud130 \uc8fc\uc694\ubd80\ud488 CPU \ud14c\uc2a4\ud2b8\uc0c1\ud488 -1-"},{"it_name":"\ucef4\ud4e8\ud130 \uc8fc\uc694\ubd80\ud488 CPU \ud14c\uc2a4\ud2b8\uc0c1\ud488 -2-"},{"it_name":"\ucef4\ud4e8\ud130 \uc8fc\uc694\ubd80\ud488 CPU \ud14c\uc2a4\ud2b8\uc0c1\ud488 -3-"}]
크롬 콘솔창에 위와 같은 에러문구가 표시됩니다.
스택오버플로 사이트에서 확인해보니 jquery-1.11.3.min 제이쿼리 버젼문제라고 하던데...
위 에러가 뜨는 이유가 버젼문제가 맞나요?
영카트에서 이런 제이쿼리 버젼문제때문에 에이젝스 배열값을 받지 못한다는건 말이 안되는거같은데..
(이미 다른 ajax 파일들 보면 다 배열값으로 넘기고 있고...)
어디가 문제인지 알려주신다면 감사하겠습니다 ㅜ
답변 2
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
jquery 를 상위 버전으로 교체해보세요.
while( $row = mysqli_fetch_array($result) ) {
$data[$cnt]['it_name'] = $row['it_name']; // <- ' 가 빠진듯합니다만..
$cnt++;
}
!-->