LoadVars.sendAndLoad() method
어제 저녁부터 단 하나의 메써드 가지고 삽질했다. 오랜만이다. ㅡ ㅡ; loadVars 클래스의 가장 큰 장점은 하나의 무비에서 asp, php, jsp에 변수를 전달하고 결과값까지 받아올 수 있다는 점이다. 더구나 txt 파일을 그냥 읽어는 것이 아니라 동적으로 생성된 결과값을 application/x-www-urlform-encoded MIME의 형식으로 불러온다. 굉장히 쓸모 있는 녀석이기 때문에 다른 때 같으면 그냥 넘어갔을텐데 그럴 수가 없었다. ㅡ ㅡ;
아래의 코드는 입력필드에서 이름, 간단한 메세지, 그리고 비밀번호를 입력받아 이를 php에 전달하는 소스이다. PHP는 다시 MySQL DB에 이를 저장한다.
System.useCodepage = true;
//한글 데이터를 입력받을 시에는 반드시 필요하다.
_root.inputName.tabIndex = 1;
_root.inputMessage.tabIndex = 2;
_root.inputKey.tabIndex = 3;
_root.sendBtn.tabIndex = 4;
_root.board.tabEnabled = false;
//각 필드에서 탭키를 이용한 동작을 할 경우
//이동하게 되는 순서를 정한다.
_root.board.text = "ready";
//TextArea component인 board는
//현재 애플리케이션의 상태를 표시해준다.
_root.link = "up.php";
//LoadVars를 통해 연결될 php파일을
//변수를 통해 지정해준다.
sender = new LoadVars();
//데이터를 보내는 객체 생성
getter = new LoadVars();
//데이터를 받는 객체 생성
getter.onLoad = function() {
//onLoad이벤트를 이용하여 데이터 전송이 끝났을 경우
//실행될 함수를 선언한다.
_root.sendBtn.enabled = true;
//Button.enabled 속성을 이용해서
//데이터 전송이 끝나지 않았을 경우
//데이터가 다시 입력되지 않도록
//버튼을 비활성화시킨다.
_root.board.text += "load done\n";
if (_root.getter.R) {
//php코드에서 반환된 값을 보고 php가 정상적으로
//실행되었는지 판단한여 이를 출력한다.
_root.board.text += "sending message success.\n";
_root.inputName.text = "";
_root.inputMessage.text = "";
_root.inputKey.text = "";
_root.board.text = "done\n";
//입력 과정이 끝났으므로 필드를 지워준다.
} else {
_root.board.text += "sending message fail.\n";
}
trace(_root.getter.R);
};
_root.sendBtn.onPress = function() {
trace("clicked");
this.enabled = false;
_root.board.text += "wait please...\n";
_root.sender.sendAndLoad(_root.link, _root.getter, "POST");
//전송 버튼을 누른 직후 상태창에 메세지를 표시하고
//sendAndLoad() 메서드를 실행한다.
//결과값은 미리 선언해준 _root.getter 인스턴스가
//전달받도록 하며
//POST를 이용하여 전달하는 변수 길이에 제한이 없도록 한다.
};
아래는 동일한 디렉토리에 위치하는 up.php파일의 내용이다.
//up.php
//db에 연결 값을 전달한다.
//php코드는 대단히 허접하므로
//대충 출력하는 형태가 어떤지만 보시오. ㅡ ㅡ;
$host = 'localhost';
$username = 'root';
$password = '0123456';
$dbName = 'vizualizer';
//기본적인 DB 연결을 위한 변수 선언.
//일반적으로 이러한 변수는 한 파일에 선언하지 않고
//include 문을 통해 다른 파일에서 읽어들이는 것이 보통이다.
$link = mysql_connect($host, $username, $password);
mysql_select_db($dbName, $link);
$query = "INSERT INTO testTable VALUES (NULL, '$Name', '$Message', password('$key'), NULL)";
//테이블의 첫 컬럼은 auto-increament로 고유번호,
//마지막 컬럼은 DATESTAMP가 DB에서 자동으로 저장되기에
//여기서는 null값을 전달.
$result = mysql_query($query);
if ($result){
$R = "true";
} else {
$R = "false";
}
echo "&R=".$R;
//최종 결과는
//&R=true;
//혹은
//&R=false;
//일반적으로 플래시에서 loadVariables()를 이용해
//불러들이는 .txt파일의 내용과 동일하다.
그러니까 중요한 것은 변수를 전달하는 녀석과 전달 받는 녀석 둘로 쪼개서 서로 다른 인스턴스를 선언하는 것. 또한 두 인스턴스 모두 LoadVars class의 인스턴스야 한다는 점이다. 그래야만 onLoad, onData등의 이벤트를 사용하는 것이 가능할테니.
늘 그렇듯 해답을 알고 나면 정말 허무하다.
additional info from zdnet.co.kr
About this entry
You’re currently reading “LoadVars.sendAndLoad() method,” an entry on multiplicité
- Published:
- Saturday, December 4th, 2004 at 8:12 pm
- This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 2.0 Korea.
- Author:
- vizualizer
- Category:
- techne
No comments
Jump to comment form | comments rss