ajax 질문입니다..

ajax 질문입니다..

QA

ajax 질문입니다..

본문


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

개념적인 부분의 이해가 먼저 필요해 보입니다.


요청 페이지 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

디버깅 하는 방법은,

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 호출 자바 스크립트가 정상 작동하지 않는 것일 가능성이 있기 때문에, 그 부분이 작동되도록 수정하면 됩니다.

500 에러는, 여기에서는 보통 php 오류입니다.

sql_query(), sql_fetch_array() 는 그누보드에서 자체적으로 정의한 함수이기 때문에

해당 함수를 사용하지 않거나, 사용하려면 인클루드를 해야 됩니다. include_once('../../../common.php'); (상대경로를 잘 맞추어서)

500 대신 php 오류메시지를 보고자 하는 경우에는,

error_reporting(E_ALL);

ini_set("display_errors", 1);

를 상단에 넣어주면 됩니다.

네! common이 문제일것 같아서 넣으니 문제없이 진행됩니다.

헌데 아무것도 찍히지가 않네요..
$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="+userid

식으로 넘기는 경우라면,

브라우저에서 테스트(디버깅을 할 때도)

/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값 찍히는거부터 확인하세여

 

답변을 작성하시기 전에 로그인 해주세요.
전체 407
QA 내용 검색
filter #ajax ×

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT