테스트 사이트 - 개발 중인 베타 버전입니다

ajax 질문입니다.. 채택완료

humanb2box 8년 전 조회 2,369

</p><p>function IDchkBtns(){</p><p>
</p><p><span style="white-space:pre">			</span>// id입력받는 공간</p><p><span style="white-space:pre">			</span>var userid = document.getElementById("memberID").value;</p><p><span style="white-space:pre">			</span>// 중복되었는지 아닌지 글자가 바뀌는 부분 </p><p><span style="white-space:pre">			</span>var IDchkDesc = document.getElementById("memberHP");</p><p>
</p><p>
</p><p><span style="white-space:pre">				</span>xmlhttp = new XMLHttpRequest(); </p><p><span style="white-space:pre">			</span></p><p><span style="white-space:pre">				</span>xmlhttp.open("GET","/skin/board/wassane_request/memberHP.php.php?q="+userid,true);</p><p><span style="white-space:pre">								</span></p><p><span style="white-space:pre">				</span>xmlhttp.send();</p><p>
</p><p>
</p><p>
</p><p><span style="white-space:pre">				</span>xmlhttp.onreadystatechange=function(){</p><p><span style="white-space:pre">					</span></p><p><span style="white-space:pre">					</span>if(xmlhttp.readyState==4 && xmlhttp.status ==200){</p><p><span style="white-space:pre">						</span>IDchkDesc.innerHTML = xmlhttp.responseText;</p><p><span style="white-space:pre">					</span>}</p><p><span style="white-space:pre">					</span></p><p><span style="white-space:pre">				</span>}</p><p>
</p><p><span style="white-space:pre">		</span>}</p><p>

ajax 코드입니다.

</p><p><?php</p><p><span style="white-space:pre">	</span></p><p><span style="white-space:pre">	</span>$q = $_REQUEST['q'];</p><p><span style="white-space:pre">	</span>alert("$q");</p><p><span style="white-space:pre">	</span></p><p>
</p><p>
</p><p>$query = "select * from g5_member WHERE mb_name='$q' ";</p><p>$result = sql_query($query);</p><p>$memberHp = sql_fetch_array($result)</p><p>
</p><p><span style="white-space:pre">	</span>if(!$q){ echo "<strong style='color:red'>전화번호가 없습니다.</strong>";}</p><p><span style="white-space:pre">	</span>else{echo "<strong style='color:blue'>".$memberHp['mb_hp']."</strong>";}</p><p>
</p><p>?></p><p>

php 코드입니다..

제가 하고싶은건 멤버 아이디를 넘겨서 멤버 아이디에 전화번호를 respon 받고싶습니다..

제가 문법이 틀렸나요?

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
8년 전

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

요청 페이지 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">https://opentutorials.org/course/1375/6851

로그인 후 평가할 수 있습니다

답변에 대한 댓글 6개

h
humanb2box
8년 전
말씀하신대로 수정했습니다..
그래도 반응이없습니다..

오류인지 아닌지.. 디버깅하는 방법좀 알 수 있을까요?
마르스컴퍼니
8년 전
디버깅 하는 방법은,

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 호출 자바 스크립트가 정상 작동하지 않는 것일 가능성이 있기 때문에, 그 부분이 작동되도록 수정하면 됩니다.
h
humanb2box
8년 전
500 에러가 뜹니다.. 스킨경로였는데 www아래에 넣어도 500에러가 뜹니다..

뭐가 문제일까요?
마르스컴퍼니
8년 전
500 에러는, 여기에서는 보통 php 오류입니다.

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

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

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

error_reporting(E_ALL);

ini_set("display_errors", 1);

를 상단에 넣어주면 됩니다.
h
humanb2box
8년 전
네! 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에 전화번호가 있습니다..

문법이 틀렸나요?
마르스컴퍼니
8년 전
"/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 로 수정해야 할 듯 합니다.

댓글을 작성하려면 로그인이 필요합니다.

8년 전

 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개

h
humanb2box
8년 전
넘어가지가 않는것 같아요.. 에코가 찍힐틈이없는거같아용....

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인