wr_7, wr_8 시도, 구군을 이용하고 있고  시도 구군이 출력이 됩니다.

wr_7, wr_8 시도, 구군을 이용하고 있고  시도 구군이 출력이 됩니다.

QA

wr_7, wr_8 시도, 구군을 이용하고 있고  시도 구군이 출력이 됩니다.

답변 2

본문

아래의 소스를 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> 요소에 methodaction을 설정해야 검색 요청이 서버에 전달됩니다.


<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_7wr_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://도메인');이와같이 설정이되어 있어야 한다라는뜻이겟지요...흠

이부분을 오류가 있는지없는지 다시 확인해보시기바랍니다.

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 499
© SIRSOFT
현재 페이지 제일 처음으로