본문 바로가기

은비냥's Development/。Java Script

PHP의 수행결과를 다시 자바스크립트 변수로 받아서 쓰기

 내용출저 : http://kwon.itmaker.net/v3/kwon_board/view.php?id=87&code=profesor_0

 

 

PHP의 수행결과를 다시 자바스크립트 변수로 받아서 쓰기

제가 하고 싶었던 처리내용은 이런 것입니다.
사용자가 브라우저로 html 문서를 보는 과정에서 FORM이나 LINK를 클릭하지않고도 PHP를 실행시켜서 DB를 조회해서 결과값을 불러다가 다시 브라우저의 자바스크립트 변수에 넣어 사용자가 쓸 수 있는가 하는 것이었죠.
대부분의 대답은 '불가능하다'라는 쪽에 가까웠는데...
(PHP는 서버에서 이미 실행된 결과만 사용자 브라우저에게 뿌려주는 것이기 때문에...)
우연히 코리아인터넷닷컴에 갔다가 답변이 될만한 ASP강좌내용을 보게되서 PHP용으로 바꿔봤습니다.
결론은 잘 됩니다.
혹시 다른 분들도 비슷한 일이 필요할까 싶어 팁으로 올려봅니다.

---------------------------------------------------------------------
<사용자가 띄우는 html 예>
<html>
<body>
<script language="Javascript">
var username='';
var jumin='';
var email='';
</script>

<script language="Javascript" src="jseng.php"></script>

<script language="Javascript">
document.write("사용자이름:"+username+"<br>");
document.write("주민번호:"+jumin+"<br>");
document.write("전자우편:"+email+"<br>");
document.write();
</script>
</body>
</html>
--------------------------------------------------
팁내용은 아주 간단합니다.
자바스크립트 변수값을 되돌려주는 PHP프로그램을 자바스크립트 쏘스파일로 지정해 놓는다는 것입니다.
해당 php 프로그램에서는 header함수를 써서...컨텐트타입을 "application/x-javascript'"로 지정해 놓고요.
그래서 제가 테스트했던 php파일 예를 보면,
------------------------------------------------------------
<?
header('Content-Type: application/x-javascript');
include('class_db.inc');
$x = new query;
$x->open();
$x->query='select user_name,user_jumin,user_email from customer where user_id="gaze"';
$x->execute();
$x->fetch();
$username = $x->record[0];
$jumin = $x->record[1];
$email = $x->record[2];
$x->close();
print('username="'.$username.'";');
print('jumin="'.$jumin.'";');
print('email="'.$email.'";');

?>
--------------------------------------------------------------------
중간에 나오는 클래스는 그냥 db조회용으로 제가 사용하는 것일 뿐이구요...
미리 말씀드린대로... 헤더를 자바스크립트 어플리케이션으로 지정하고,
맨 아래 석 줄에, 값을 넣어 반환해야할 자바스크립트 변수를 출력시킨 예만
보시면... 비슷한 유형의 작업에 활용이 가능하실 것으로 봅니다.







=================================================================================

자바스크립트를 사용할 때 스크립트 파일을 가져다 사용할 수 있잖아요.
<script language=javascript src=요부분>
요기에 content-type이 javascript인 php 파일을 넣어두고 사용할 수 있다는 뜻입니다.
값의 변동 문제는 세션이든 쿠키든 다른 방법이든 얼마든지 동적으로 사용가능하게 할 수 있겠네요.

=================================================================================
안된다고 생각하시는분들 .. 이렇게 생각해보세요
<script id="dynamic"></script>
<script>
function loadVariables() {
dynamic.src = "loadVariables.php";
}
</script>
<button onClick="loadVariables()">눌러주세요</button>

장구님은 원리만 써주신것일테고 응용은 자유지요

==================================================================================
src 붙은거하고 header mimetype하고 조화만 잘 맞추면 되는거.img 태그와 다를거 없고 src가 붙고 mimetype을 헤더로 보낼수 있으면 거의 다 됩니다.


iframe + innerHTML쪽또 활용하면 꽤 쓸만합니다. 11/16 2:04:41


데이타 바인딩도 꽤나 괜찮은 방법입니다.
<xml src="PHP소스,xml을 만듬?var=1&var=2" ></xml>

XML 구조를 설계해 놓고
record 를 왔다리~ 갔다리~ 하면 상당히 편리 하지요.

IE만 될것 같아요-_-;; 그런데

사실 위와 같은 일을 할때는 Data binding 쪽이 더 유용할것 같습니다.
여러번 써봤지만...굉장히 효과적임...

==================================================================================
사실은 데이타 바인딩이 제일 좋은 해답이지요 : )
아직은 넷스케이프에서 제대로 지원해주질 못하고 있습니다.

동적인 데이타 사용만이 목적이라면 xml data island를 좀 참조해보세요
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk30/htm/xmconxmldataislands.asp 11/17 1:08:09

좋은 팁입니다만........최근에 제가 겪은 걱정중에 하나가.
저렇게 하면. php 경로가 드러나는데. 그런경우, 사용자가 장난치는 것을 어떻게 막느냐가 관건이더군요.

==================================================================================

똥파리 데이타 바인딩 여러모로 사용할 곳이 많겠네요. 정보 감사합니다.
말씀하신 자바스크립트 부분으로 간단하게 구현해 보았습니다.
그런데 Header 는 별반 작용을 하지 않더군요 ^^;