Design & Development

xajax 사용법 정리

뜻하지 않게 PHP 에서 Ajax 기술 사용할 일이 있어서 XAJAX 라는 PHP용 Ajax 라이브러리를 이용해 보았다.
사용법은 상당히 단순해서 XAJAX 공식 위키 사이트에서 한 페이지 정도 분량의 문서만 읽어봐도 사용에 큰 지장이 없다.
아래는 Marco van Hylckama Vlieg 라는 블로거가 작성한 “Easy Ajax for the masses with xajax” 에서 기본적인 사항만 요약하고 거기에 작업하면서 얻은 몇가지 정보를 추가한 내용이다.

Step 1 : XAJAX 클래스 라이브러리 삽입

require_once("xajax.inc.php");

XAJAX 공식 홈페이지에서 파일을 다운로드한 후에 적당한 곳에 압축 풀고 그 안에 포함된 xajax.inc.php 를 프로그램 처음에 삽입하면 된다.

Step 2 : 서버측 XAJAX 함수 작성

function makeBold($p_sArg)  {
  $sOut = '<b>'.$p_sArg.'</b>';
  $objResponse = new xajaxResponse();
  $objResponse->addAssign('my_element', 'innerHTML', $sOut);
  return $objResponse->getXML();
}

xajaxResponse 객체의 인스턴스를 생성하고 작업에 필요한 적절한 명령어를 써준다. 많이 사용되는 명령어로는

Step 3 : 마무리 짓기

$objAjax = new xajax();
$objAjax->registerFunction('makeBold');
$objAjax->processRequests();

XAJAX 객체의 인스턴스를 생성해준 후 작성한 함수를 xajax->registerFunction() 를 이용해 등록한다. 마지막으로 xjax->processRequests() 로 요청을 처리한다.

Step 4 : 기타

$objAjax->printJavascript();

문서의 head 태그 사이에 위 구문을 넣어준다. 이것은 서버측 xajax 함수를 클라이언트측의 자바스크립트로 자동 전환해준다.

Step 5 : 사용

<a href="#" onclick="xajax_makeBold(document.getElementById('my_element'));">Kick his ass!</a>

앞에서 만든 사용자 정의 함수를 “xajax_” 형태로 사용하면 된다.

추가 정보

1. 디버깅을 위해서는 $xajax->debugOn(); 명령어를 사용할 수 있다.

2. 만약 xajax 라이브러리 파일들을 임의의 디렉토리에 넣었다면 xajax.js 라는 자바스크립트 파일을 못찾아서 에러가 난다. 이런 경우에는

<?php $xajax->printJavascript('../lib'); ?>

과 같은 식으로 xajax->printJavascript() 의 인자로 설치한 경로를 지정해주면 된다.

3. xajax 의 기본적으로 utf-8 로 설정되어 있다. 가령 한글 문제로 euc-kr 을 사용하고자 한다면 xajax.inc.php 파일에서 다음과 같이 선언해주면 된다.

define ('XAJAX_DEFAULT_CHAR_ENCODING', 'euc-kr' );

4. 폼값 처리를 위해서는 xajax.getFormValues(…) 를 사용하면되고 폼 태그 내 특정 폼 요소의 값을 참고하고 싶으면 다음과 같이 하면된다.

<form id="testForm">
   <input type="text" id="testText" name="testText">
   <input type="submit" value="test"
        onChange="xajax_yourFunc(xajax.getFormValues('testForm')); return false;">
</form>

이런 식으로 넘어온 form values 를 $formData[testText] 과 같은 식으로 해서 특정 폼 요소의 값을 참조할 수 있다.

Advertisements

5 thoughts on “xajax 사용법 정리

  1. define (‘XAJAX_DEFAULT_CHAR_ENCODING’, ‘euc-kr’ );
    해도 한글이 깨져나오는데.. 다른 부분이 있는지 …

  2. ^^; 캐쉬되어있었네요.. 해결 했습니다.
    위예제에서 반응이 없어서 ‘my_element’
    dd
    추가 하고 실행 했더니 페이지가 루프 돌더라구요..

    Kick his ass!
    부분 어떻게 해야 할지..

  3. my_element 라고 한 곳은 html 문서 내 element 의 ID 를 넣어주라는 의미입니다. 가령 <div id=”div1″> </div> 같은 식으로 했을 때 div1을 my_element 대신 넣어주면 되겠죠. 질문의 요지를 제가 제대로 이해한건지? ^^;;

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s