wr_7, wr_8 시도, 구군을 이용하고 있고 시도 구군이 출력이 됩니다.
본문
아래의 소스를 list.skin.php 의 <form> </form> 사이에 넣었습니다.
작동을 안합니다.
wr_7, wr_8 시도, 구군을 이용하고 있고
시도 구군이 출력이 됩니다.
그런데
검색은 안됩니다.
어디를 잘못 했나요?
감사합니다.
<!-- 시도 구군 시작 -->
<select name="wr_7" id="wr_7" onChange="item_Search(this.value)">
<option selected value="">시/도</option>
<?
$sido_array = array("서울", "경기", "인천", "부산", "대구", "대전", "광주", "세종", "울산", "강원", "경남", "경북", "전남", "전북", "충남", "충북", "제주");
foreach($sido_array as $key => $value){
$sel_chk = "";
if($wr_7 === $value){
$sel_chk = "selected";
}
echo '<option value="'.$value.'" '.$sel_chk.'>'.$value.'</option>';
}
?>
</select>
<select id="wr_8" name="wr_8" >
<option value="">시/군/구</option>
</select>
<script>
function item_Search(Args){
$('#wr_8').empty();
$('#wr_8').append('<option value="">시/군/구</option>');
if (Args == "")
return;
$.ajax({
type : "post",
async : false,
cache : false,
data : {"item1":Args},
dataType : "xml",
url : g5_url+"/ajax.sidomake.php",
success : function(xml){
if ($(xml).find("list").find("item").length > 0) {
$(xml).find("list").find("item").each(function(i){
var names = $(this).find("names").text();
$('#wr_8').append('<option value="'+names+'">'+names+'</option>');
});
<?php if($wr_8){ ?>
$("select[name='wr_8'] option[value='<?php echo $wr_8; ?>']").attr('selected','selected');
<? } ?>
}
}
});
}
</script>
<!-- 시도 구군 끝 -->
답변 2
♣ WPro 님도 지적하셨는데, AJAX 호출 시 에러가 발생했을 수 있음 ~~
>> 에러 처리 구문을 추가하여 확인.
※ <form>
요소 사이에 해당 코드를 넣었다고 하셨는데, ~~
폼의 action
이 제대로 설정되지 않았거나 검색 조건을 서버로 전송하는 과정이 누락되었을 가능성이 있습니다.
>> <form>
요소에 method
와 action
을 설정해야 검색 요청이 서버에 전달됩니다.
<form name="search_form" method="get" action="list.skin.php">
<!-- 시도, 구군 선택 코드 -->
<!-- 현재 작성한 코드 넣기 -->
</form>
※ PHP에서 사용하는 <?php ?>
태그와 <? ?>
단축 태그가 혼용되어 있어,
환경에 따라 단축 태그(<? ?>
)가 제대로 해석되지 않을 수 있습니다.
>>
<?php ?>
로 변경해보세요.
success: function(xml) {
if ($(xml).find("list").find("item").length > 0) {
$(xml).find("list").find("item").each(function(i) {
var names = $(this).find("names").text();
$('#wr_8').append('<option value="' + names + '">' + names + '</option>');
});
<?php if ($wr_8) { ?>
$("select[name='wr_8'] option[value='<?php echo $wr_8; ?>']").attr('selected', 'selected');
<?php } ?>
}
}
※ AJAX 호출 시 에러가 발생했을 경우를 대비해 에러 처리 구문을 추가 ~~
$.ajax({
type: "post",
async: false,
cache: false,
data: {"item1": Args},
dataType: "xml",
url: g5_url + "/ajax.sidomake.php",
success: function(xml) {
if ($(xml).find("list").find("item").length > 0) {
$(xml).find("list").find("item").each(function(i) {
var names = $(this).find("names").text();
$('#wr_8').append('<option value="' + names + '">' + names + '</option>');
});
<?php if ($wr_8) { ?>
$("select[name='wr_8'] option[value='<?php echo $wr_8; ?>']").attr('selected', 'selected');
<?php } ?>
}
},
error: function(xhr, status, error) {
console.log("AJAX 에러 발생: " + error);
}
});
※
wr_7
과 wr_8
값에 대한 필드와 로직 추가 ~~
if (isset($_GET['wr_7']) && $_GET['wr_7'] != '') {
$search_sql .= " AND wr_7 = '" . sql_real_escape_string($_GET['wr_7']) . "'";
}
if (isset($_GET['wr_8']) && $_GET['wr_8'] != '') {
$search_sql .= " AND wr_8 = '" . sql_real_escape_string($_GET['wr_8']) . "'";
}
. . .
※ ※ ※ 이후에도 문제가 있다면;
>> ajax.sidomake.php
에서,
item1
파라미터를 받아 처리하는 코드가 올바른 지 확인해 보세요.
$item1 = isset($_POST['item1']) ? $_POST['item1'] : '';
if ($item1) {
echo '<?xml version="1.0" encoding="utf-8"?><list>';
echo '<item><names>구군1</names></item>';
echo '<item><names>구군2</names></item>';
echo '</list>';
}
서치함수를 보면 url : g5_url+"/ajax.sidomake.php", 이렇게정의하셔는데요....그렇다면..define('G5_URL', 'http://도메인');이와같이 설정이되어 있어야 한다라는뜻이겟지요...흠
이부분을 오류가 있는지없는지 다시 확인해보시기바랍니다.