ajax로 db와 연동해보려는데 반응이 없어요ㅠㅠ 채택완료
-- 게시판 글쓰기 페이지 ( write.skin.php) --
function chkcode(){ if(fwrite.wr_2.value=="100") { fwrite.wr_3.value="a"; } if(fwrite.wr_2.value=="101") { fwrite.wr_3.value="b"; } if(fwrite.wr_2.value=="102") { fwrite.wr_3.value="c"; } if(fwrite.wr_2.value=="103") { fwrite.wr_3.value="d"; } if(fwrite.wr_2.value=="104") { fwrite.wr_3.value="e"; } if(fwrite.wr_2.value=="105") { fwrite.wr_3.value="f"; } if(fwrite.wr_2.value=="106") { fwrite.wr_3.value="g"; } if(fwrite.wr_2.value=="107") { fwrite.wr_3.value="h"; } if(fwrite.wr_2.value=="108") { fwrite.wr_3.value="i"; } if(fwrite.wr_2.value=="109") { fwrite.wr_3.value="j"; } if(fwrite.wr_2.value=="131") { fwrite.wr_3.value="k"; }
//var x=$("#wr_2 option:selected").val(); //$("#wr_2n").val(x); var datas = ajaxSelectCode();
} function ajaxSelectCode() {
var result = "";
$.ajax({
type: "POST",
url: g5_bbs_url+"/ajax.wr_code.php",
data: { "wr_2": $("#wr_2").val() }, // 중요부분. $('#wr_2').val() 현재 선택된 값을 가져온다.
success: function(data) {
result = data
}
});
}
-- ajax 받아오는 페이지 (ajax.wr_code.php)-- //bbs 폴더에 있습니다.
if($w=='') { $sql = "select wr_1, wr_4 from {$write_table} where wr_2 = '$wr_2' "; $row=sql_fetch($sql); while($re = sql_fetch_array($sql)) { $wr1 = $re[wr_1]; $wr2 = $re[wr_2]; $wr4 = $re[wr_4]; } if($wr_2n == $wr2 && $wr_1 == '') { $wr_1 = 1; $wr_4 = 1; } else { $wr_1 = $wr_1 + 1; $wr_4 = $wr_4 + 1; } } ?>
select 선택시 option의 value값을 ajax data를 통해 ajax.wr_code.php으로 전달하고
ajax.wr_code.php에서는 value값을 $wr_2=$_POST['wr_2'];
그리고는 sql문에 where wr_2=$wr_2로 된 필드만 가져와서 wr_2에 select의 option값이
있다면 기존의 wr_1과wr_4의 숫자에 각각 +1씩해서 글쓰기의 wr_1과wr_4의 input 폼에 값을 뿌려주고
없다면 wr_1과wr_4에는 1을 글쓰기의 wr_1,wr_4 input 폼에 뿌려주려고 하는 의도인데
미치도록 안되네요.ㅠㅠ
ajax post반응 조차 없는 것 같아요...제가 무엇을 빠트렸는지 잘못 입력했는지 도저히 못찾겠습니다.
답변 5개
님 댓글 오후에 남기셨던데 이제서야 봤어요
저번에 알려주신 소스대로 해도 반응없어서
네이버.구글 다 뒤져가며 이 방법 저 방법으로
테스트하다 최종 수정까지 온 것인데..
진작 보고 해본뒤 결과에 대해 뭔가 답을
드릴텐데 님 마지막 기분 상하셨다는 말씀보고
추적해보니까 댓글이 있더라구요..
정말 오해는 마셔요 그전처럼 되든 안되든 님께
질문 던졌을거에요
댓글을 작성하려면 로그인이 필요합니다.
왕계란님 감사합니다.ㅠㅠ 제가 말 전달이 미숙해서 님까지 머리아프게 한 것 같아요..
저도 이런 저런 테스트 해보다 지쳐서 머리까지 @@#@@되고 있거든요
음 우선 코딩을 말로 설명한다면 이렇게 되요..
글쓰기 페이지에서 이 있는데
셀렉트의 option값을 선택하면 onChange()를 통해 ajax로 처리합니다.(write.skin.php)
그리고 바로 DB의 wr_2의 필드와 셀렉트의 선택된 옵션값과 비교합니다.(ajax.wr_code.php)
ajax.wr_code.php에서
만약 option값과 DB의 wr_2의 필드값이 같다면
DB의 wr_1, wr_4필드값을 뽑아와서 wr_1과wr_4에 1씩 더해준 뒤 그 값을 아래 write.skin.php 페이지의
과
에
에 wr_1과 wr_4에 뿌려줍니다.
만약 option값이 DB의 wr_2의 필드값에 저장되어 있는 것이 없다면
과
에는
각각 숫자 1을 뿌려줍니다.
이런 구조인데 ...혹시 이해가 되셨는지요ㅠㅠ
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
왕계란님!!
var result=''; / sueccss(function) { resule=data } 이런식으로 하면 값이 넘어오질 않더라구요
대신 sucess에 $("#wr_2n).val(dat);로 하니깐 wr_2n이라는 input box에 값을 보여주더라구요
그리고 말씀대로 $wr_1과 $wr_4에도 echo문을 사용했더니 wr_2n라는 inputy box에
wr_2와 wr_1,wr_4 모두 값이 보여주던데..문제는 ajax.wr_code.php에서 db쿼리를 이용해서
$wr_2 = $_POST['wr_2']의 값을 db의 쿼리문 중 where wr_2 = $wr_2에 사용하여
DB의 wr_2에 저장된 값과 ajax로 받은 $wr_2값과 비교하여 해당하는 값이 없다면
wr_1과 wr_4에 1이라는 숫자를 부여하고 있다면 기존의 wr_1과 wr_4에 +1씩하려는 의도이거든요
DB의 필드 값과 $wr_2값이 제대로 비교되어 지는지..그리고 wr_1과 wr_4를 echo문으로 처리했을ㅇ때
wr_1과 wr_4에 각각 별도로 부여하고 싶은데 suceess에서 어떻게 처리해야하는지 궁금합니다.
답변에 대한 댓글 1개
이 부분도 좀 이상하네요.
data: { wr_2: $("#wr_2").val() },
앞에 큰따옴표 제거해 주세요.
근데 코딩이 좀 이해가 안 가게 쓰신 듯합니다.
스크립트 부분은 일단 빼구요, html 부분만 갖고 설명을 해 주시는 게 더 나을 듯합니다.
<input type="text" name="wr_2" value="" />
이런 게 있는데 여기에 무슨 값이 어떻게 되고 그 값이 이럴 땐 저렇게 되어야 한다...
이렇게요.
댓글을 작성하려면 로그인이 필요합니다.
url: g5_bbs_url
이거 php 코드 아닌가요?
딱히 변수로 선언된 부분이 안 보이는데...
url: "=g5_bbs_url?>/ajax.wr_code.php",
답변에 대한 댓글 2개
console.log(data);
우선 이렇게 해서 값이 정상적으로 넘어오는지 확인해 보세요.
긜고 ajax.wr_code.php 이 페이지에 보면
echo $wr_2;
이렇게 되어 있네요.
이러면 $wr_2 값이 result 변수에 들어갈 텐데...
이건 테스트로 찍었다고 쳐도 해당 페이지에서 success 시에 넘기는 값이 하나도 없네요.
echo $wr_1;
echo $wr_4;
이런 식으로라도 값을 넘겨야 하지 않나요?
댓글을 작성하려면 로그인이 필요합니다.
에러코드를 확인해보세요.
$.ajax({
type: "POST",
url: g5_bbs_url+"/ajax.wr_code.php",
data: { "wr_2": $("#wr_2").val() }, // 중요부분. $('#wr_2').val() 현재 선택된 값을 가져온다.
success: function(data) {
result = data
}
});
를
$.ajax({
type: "POST",
url: g5_bbs_url+"/ajax.wr_code.php",
data: { "wr_2": $("#wr_2").val() }, // 중요부분. $('#wr_2').val() 현재 선택된 값을 가져온다.
error : function(request, status, error) {
//통신 에러 발생시 처리
alert("code : " + request.status + "\r\nmessage : " + request.reponseText);
} ,
success: function(data) {
result = data
}
});
답변에 대한 댓글 1개
ajax.wr_code.php에 쿼리 비교문을 했지만 아무런 반응이 없습니다.
혹시 sucess에 어떻게 설정해야 하는지 그리고 ajax.wr_code.php의 쿼리문도 수정해야하는 것인지
방법을 못찾고 있네요ㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
<select name="wr_2" id="wr_2">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="text" name="wr_1" id="wr_1" />
<input type="text" name="wr_4" id="wr_4" />
<script type="text/javascript">
$(function() {
$("#wr_2").on("change", function() {
$.ajax({
type : "post",
url : "ajax.wr_code.php 경로",
dataType : "json",
data : {
wr2 : $(this).val();
},
success : function(v) {
if(v) {
$("#wr_1").val(v.wr1);
$("#wr_4").val(v.wr4);
} else {
alert("Error!");
return false;
}
}
});
});
});
</script>
[/code]
html 부분입니다.
[code]
<?
include_once "_common.php";
$res = array();
$wr2 = $_POST['wr2'];
$num = sql_fetch("SELECT wr_1, wr_4 FROM 테이블명 WHERE wr_2 = '".$wr2."'");
if($num['wr_1'] && $num['wr_4']) {
$res['wr1'] = $num['wr_1'] + 1;
$res['wr4'] = $num['wr_4'] + 1;
}
echo json_encode($res);
[/code]
php 부분입니다.
올려 주신 코드를 봐도 좀 이상한 부분이 많아서 일단 wr_1, wr_4에 값이 들어가도록 처리만 된 것입니다.
물론 테스트는 안 했으니 실제 페이지에 적용해 보시고 되는지 확인은 하셔야 할 듯하네요.