function IDchkBtns(){ // id입력받는 공간 var userid = document.getElementById("memberID").value; // 중복되었는지 아닌지 글자가 바뀌는 부분 var IDchkDesc = document.getElementById("memberHP"); xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET","/skin/board/wassane_request/memberHP.php.php?q="+userid,true); xmlhttp.send(); xmlhttp.onreadystatechange=function(){ if(xmlhttp.readyState==4 && xmlhttp.status ==200){ IDchkDesc.innerHTML = xmlhttp.responseText; } } }
ajax 코드입니다.
<?php $q = $_REQUEST['q']; alert("$q"); $query = "select * from g5_member WHERE mb_name='$q' ";$result = sql_query($query);$memberHp = sql_fetch_array($result) if(!$q){ echo "<strong style='color:red'>전화번호가 없습니다.</strong>";} else{echo "<strong style='color:blue'>".$memberHp['mb_hp']."</strong>";}?>
php 코드입니다..
제가 하고싶은건 멤버 아이디를 넘겨서 멤버 아이디에 전화번호를 respon 받고싶습니다..
제가 문법이 틀렸나요?
답변 2개 / 댓글 7개
개념적인 부분의 이해가 먼저 필요해 보입니다.
요청 페이지 A 에서 ajax 로 B 페이지 처리를 한 후, A 에서 그 결과를 보여주고 싶은 경우에는..
B 페이지의 결과값을 A 페이지에서 받아오면 됩니다.
그래서 그에 맞게 코드를 수정하면,
ajax 처리 페이지에서는,
echo $memberHP['mb_hp'] 로 단순 출력 처리만 해주면 됩니다.
(백그라운드로 처리되기 때문에, alert 등은 사용자에게 보여지지 않습니다.)
그러면 A 페이지의,
IDchkDesc.innerHTML = xmlhttp.responseText;
를 통해 xmlhttp.responseText 로 받아온 전화번호가 IDchkDesc 안에 들어가게 됩니다.
참고로, ajax 는 jquery 를 사용하면 보다 손쉽게 사용할 수 있습니다.
jquery 를 통한 ajax 사용 참고 페이지입니다. https://opentutorials.org/course/1375/6851
답변에 대한 댓글 6개
ajax 로 처리하는 페이지를 먼저 브라우저로 실행하여 결과값이 제대로 출력되는지 확인합니다.
ajax 처리 페이지의 URL 이 test.com/test/test.php 라면,
http://test.com/test/test.php 를 실행하여 결과값이 제대로 출력되는지 살펴봅니다.
정상적으로 처리된다면 전화번호가 출력될것입니다. ex) 1111-1111
ajax 처리페이지의 결과값이 제대로 출력된다면,
ajax 처리페이지에 요청을 하고, 결과값을 받아오는 부분의 검토가 필요합니다.
요청 페이지 자바 스크립트 소스
if(xmlhttp.readyState==4 && xmlhttp.status ==200){
IDchkDesc.innerHTML = xmlhttp.responseText;
}
를
if(xmlhttp.readyState==4 && xmlhttp.status ==200){
alert(xmlhttp.responseText);
IDchkDesc.innerHTML = xmlhttp.responseText;
}
처럼 alert 로 결과값을 제대로 받아오는지를 확인해 보는 식으로 디버깅하면 됩니다.
alert 로 제대로 결과값이 확인되지 않는다면, ajax 호출 자바 스크립트가 정상 작동하지 않는 것일 가능성이 있기 때문에, 그 부분이 작동되도록 수정하면 됩니다.
뭐가 문제일까요?
sql_query(), sql_fetch_array() 는 그누보드에서 자체적으로 정의한 함수이기 때문에
해당 함수를 사용하지 않거나, 사용하려면 인클루드를 해야 됩니다. include_once('../../../common.php'); (상대경로를 잘 맞추어서)
500 대신 php 오류메시지를 보고자 하는 경우에는,
error_reporting(E_ALL);
ini_set("display_errors", 1);
를 상단에 넣어주면 됩니다.
헌데 아무것도 찍히지가 않네요..
$q = $_REQUEST['q'];
$query = "select * from g5_member WHERE mb_name='$q' ";
$result = sql_query($query);
$mhp = sql_fetch_array($result);
echo $mhp['mb_hp'] ;
이부분이 문제가 있나봅니다.
$q의 전화번호를 가져와야 하거든요.. 분명 db에 전화번호가 있습니다..
문법이 틀렸나요?
식으로 넘기는 경우라면,
브라우저에서 테스트(디버깅을 할 때도)
/skin/board/wassane_request/memberHP.php.php?q=abcd
처럼 주소입력을 하면 됩니다.
/skin/board/wassane_request/memberHP.php.php 만 하면 q 정보가 전달된 것이 아니니까요.
그러고 보니 파일이름이 memberHP.php.php 인가요? memberHP.php 로 수정해야 할 듯 합니다.
alert("$q");
말고 echo로 찍어보세여
echo $_REQUEST[q];
$query = "select * from g5_member WHERE mb_name='$q' ";
=> $query = "select * from g5_member WHERE mb_name='".$q."' ";
$q값 찍히는거부터 확인하세여
답변에 대한 댓글 1개
답변을 작성하려면 로그인이 필요합니다.
그래도 반응이없습니다..
오류인지 아닌지.. 디버깅하는 방법좀 알 수 있을까요?