문뜩 출근하는길에 지하철 계단을 올라가는 사람들의 등을 봤다.
누구는 집에 있는 자신의 가족을 위해
누구는 부모님을 위해
누구는 내일의 자신을 위해
모두의 등에 무거운 짐을 지고 가는 것 마냥 구부정 했다.
나는 어떠한가 생각을 해본다.
문뜩 출근하는길에 지하철 계단을 올라가는 사람들의 등을 봤다.
누구는 집에 있는 자신의 가족을 위해
누구는 부모님을 위해
누구는 내일의 자신을 위해
모두의 등에 무거운 짐을 지고 가는 것 마냥 구부정 했다.
나는 어떠한가 생각을 해본다.
안녕하세요. 기본적으로 다들 javascript 에 대해서 기본적인 지식이 있다 생각하고 글을 쓰겠습니다.
ajax로 아주 간단한 데이터 통신을 하려고하는데
바로 카테고리 변경 입니다.
먼저 Ajax는 Asynchronous Javascript And XML의 약자로, 일반적으로 클라이언트와 서버측의 데이터 전송 및 처리를 비동기적(Asynchronous)으로
처리하는 것에 그 목적이 있습니다.
Ajax를 사용함으로써, 서버측에 데이터를 요청한 후, 그 데이터의 수신이 완료될 때까지 기다리지 않고, 다른 작업을 바로 진행할 수 있씁니다.
그러한 이유로 좀더 웹페이지를 자유롭게 구성할 수 있게 되었고, 불필요한 잦은 페이지 로딩을 줄일 수 있습니다.
이제 Ajax로 한번 카테고리 변경 코딩을 해보는걸로 하시죠.
$(document).ready(function(){
$.ajax({
async : false(비동기식데이터처리),
type: 'POST',
url: '데이터가 처리될 url주소',
data: 전달 될 데이터,
error : function(response, status, request){
에러시 처리해줄 부분
},
success: function(resHtml){
데이터를 잘 전달해서 잘 받아오면 처리해야할 부분
}
});
});
보통 이렇게 되어있죠.
위 스크립트는 도큐먼트가 준비되자마자 저 ajax를 실행하는 걸로 되어있지만
우리는 카테고리가 변경 될때 원하는 카테고리를 얻어와야 하기때문에 ready 보단 다른걸 쓰겠습니다.
$("대상").on("change", function(){
$.ajax({
async : false(비동기식데이터처리),
type: 'POST',
url: '데이터가 처리될 url주소',
data: 전달 될 데이터,
error : function(response, status, request){
에러시 처리해줄 부분
},
success: function(resHtml){
데이터를 잘 전달해서 잘 받아오면 처리해야할 부분
}
});
});
이정도 보셨으면 대충 아~ 하실겁니다.
일단 기본적으로 변경될 대상을 만들어 보겠습니다.
(일반적으로 제가 사용하는 db에는 depthno 라고 카테고리의 대 중 소 분류가 1 2 3 으로 나눠져 있습니다.)
<select name="chg_code" id="chg_code">
<option value="철수">철수</option>
<option value="영희">영희</option>
</select>
<select name="chg_code2" id="chg_code2"></select>
$("#chg_code").on("change", function() {
var thisVal = $(this).val(); //선택한 값을 변수에 담아줍니다.
var thisdep = 2; //depthno 가 2번째 인걸 인식 시켜줍시다.
var param = "mode=getcatNm"; //보통 한개의 페이지에서 파라메타 값으로 다른 작업을 하기때문에 이렇게 되어있습니다.
param += "&val=" + encodeURIComponent(thisVal); // 문자타입이 서로 다르면 수신받는 곳에서 잘못 해석될 수도 있으니 공통된 문자인 아스크문자로 인코딩
param += "&dep=" + encodeURIComponent(thisdep); // 위와 같이 아스크문자로 인코딩 해준다음 depthno가 2라는 값을 param 변수에 추가해줍니다.
$.ajax({
async : false, type : "POST", url : "/admin/bbs/dep_chg.php", data : param, dataType : "html",
error : function(response, status, request) { // 통신 에러 발생시 처리
//alert("[알림!] 데이터 통신 도중 오류가 발생하였습니다.");
},
success: function (resHtml) {
$("#chg_code2").empty().html(resHtml); // id="chg_code2"를 먼저 빈값으로(empty()) 바꿔주고 성공적으로 가져온 데이터를 넣어줍니다.
}
});
});
이런식으로 데이터를 보내고 dep_chg.php 이 파일에서 원하는 데이터를 echo 시켜주면되겠죠?
다들 여기까진 잘 따라하거나 복붙하거나 합니다.
근데 데이터를 echo를 어떻게 시켜야하나..?? 하는 뭔가 가려운곳을 긁었는데 덜 긁은 느낌...그래서 한번 해봅니다.
생각보다 엄청 단순합니다.
db를 통한게 아닌 단순 코딩으로 해볼께요
아까 저 위에 param 변수를 보시면 mode라는 파라메타로 getcatNm 를 넘기고 있으니 이걸로 구분을 지어주면 되겠군요
<?php
if($mode = "getcatNm"){
$dep_code = $_REQUEST['val'];
$depthno = $_REQUEST['dep']; //우리가 ajax로 보낸 data를 변수에 저장합니다.
echo "<option value=''>:: 두번째분류 ::</option>";
if($depthno == 2){
echo "<option value='철수친구'>철수친구</option><option value='영희친구'>영희친구</option>";
}
}
?>
이렇게 해주면 됩니다..
그럼 저기에 echo 된 데이터들이 success에 resHtml 매개변수로 들어가 $("#chg_code2").empty().html(resHtml); 이 jquery가 실행이 됩니다.
어찌 이해 하셨나요. 티스토리를 운영한지 얼마 안되고 저도 지식이 부족하다보니 두서 없이 설명을 했네요..
그럴땐 우리 서로 지식을 공유합시다 ㅎ
일단 처음 쓰는거...... 아이폰x를 샀다.
아이폰x 다들 탈모 토끼귀 뭐 말이 많았는데
정작 쓰는 사람은 신경을 안쓴다. 가끔 토끼귀쪽에 문자나 카톡이나 알림이 걸리면 그거참 걸리적거린다.
암튼 이번에 아이폰x 큰맘먹고 질렀는데 이게 바로 돈지랄 이라고 하더라.
티스토리 초대장을 주신 웹스톰님께 정말 감사드리고 잘 꾸며볼께요