반응형

JQuery Plug-In (플러그인) 을 만드는 일련의 과정을 소개하면서, 실습을 통해 여러 사람들과 함께

내가 쌓은 지식을 공유해 보도록 하겠다.


우선!!! 알아야할 사항은 Plug-In(한국말: 플러그인) 이란 무엇이냐???


[1] Plug-In(플러그 인) 이란?


: 흔히들 가정에서 사용하는 가전제품을 예로 들어보자, 전기를 통하게 하기 위해서 우리의 어머니들은 

  가정용 콘덴서에 전기 플러그 라고 하는 놈을 꽃게 된다. 그렇게 하면 전기가 통하면서 가전제품이 작동

  하게 된다. 다만, 전기 뿐만 아니라, 다양한 모양의 플러그를 통해 기기장비들끼리 연결또한 가능하다.

  그렇게 연결함으로써 여러 기기 들을 하나의 기계처럼 함께 호환성을 이루는 구성도 가능하다 .

  아래 그림을 한번 볼까???


[출처 : 구글 이미지 검색]

  • 왼쪽의 그림을 보면 이해가 쉬울 것이다. 저렇게 생긴놈이 실생활의 플러그 인이다. 그렇다면,!! 컴퓨터 업계에서 이야기 하는 플러그 인이란 무엇인가?

  • Plug-In이란, "웹 브라우저의 일부로서 쉽게 설치되고 사용될 수 있는 프로그램을 말한다."

  • 즉, 왼쪽의 그림처럼 Web Application을 개발 할때, 플러그를 꽃았다 뻈다 하는 방식으로, 주변의 부수적인 프로그램들을 연동을 하는 방식을 말한다.

  • 이때, 플러그를 꽃는 것을 Plug In(꽃다) , 빼는 것을 Plug out(빼다) 라고 명칭하는 것이 맞는 것 같다.



















                                         [Plug -in의 이해를 돕기 위한 그림]


이제 이정도면 Plug-in이 뭐다~~ 라는 정도는 감을 잡았을 것이다. 다음으로 jQuery에서 Plug-in 

방식을 사용하는 예제를 보면서, 과연 Plug-in은 이렇게 쓰는 구나~ 하고 생각해 보기 바란다.


[2] 기존 Function 과 Plug - in의 차이점


Plug-in을 처음 사용하는 사람들은 Function 과 Plug-in의 차이점에 대해 혼돈을 하는 경향이 있다.

따라서, 이부분에 대해서 한번쯤 정리를 하고 넘어가는 것이 좋을 듯 하다. 우선 Function 과 PlugIn

방식을사용한 예제를 한번 보도록 하자.


(Function 을 사용 한 예제)

<script language="javascript"> $(document).ready(function(e){ alertFunction("This is function test"); }); alertFunction = function(msg){ alert(msg); }; </script>

위 코드는 전형적인 jquery function을 선언한 것이다. alertFunction 이라는 Function을 선언하여

호출한 예제이다. 03번 라인을 보면 호출부가 특정 엘리먼트를 가지고 호출하는 것이 아닌 Function명

을 통해서 바로 호출하도록 되어있다.


(Plug-in 을 사용한 예제)

<!doctype html>
 
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>jQuery UI Dialog - Default functionality</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.0/themes/base/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.8.3.js"></script>
  <script src="http://code.jquery.com/ui/1.10.0/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css" />
  <script>
  $(document).ready({
    $( "#dialog" ).dialog();
  });
  </script>
</head>
<body>
 
<div id="dialog" title="Basic dialog">
  <p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
</div>
 
 
</body>
</html>

  위 예제를 보도록 하자. 13번 Line의 $( "#dialog" ).dialog(); 부분을 유심히 볼 필요가 있다.

 전자의 Function에 비해서 특정 엘리먼트에서 chain 방식으로 dialog() Function을 호출하고 있다.


   지금쯤이면, 뭔가 차이점을 느꼈을 것이다. 즉!!!

   Plug-in은 외부에 만들어 놓은 Function을 자신이 원래 가지고 있더 내장 함수인 마냥 착각을 일으키기

   때문에, jQuery 내부에 있는 Function을 호출하는 것 처럼 해당 엘리먼트에 chain방식으로 호출이 가능하다.


   즉,!! Dialog 라는 외부 Plug-in 모듈을 가져와 script tag로 모듈을 in(내부에 콘덴서에 연결)한 후, 

   내장 Function인 마냥 사용을 하게 되는 것이다.!!


    Are You Understand???



    휴~ 많이 썼더니 골이 아프네~~~ ㅋㅋ


    오늘은 여기까지 다음시간에는 jQuery 작성시 주의해야할 주의사항에 대해 작성해 보도록 하겠다.

 

    주의 사항에 대해 훑고 나서, 본격적인 플러그인 제작에 들어가도록 하겠당!!!

 

    본 자료는 대학내 연구실 연구원들의 교육용 자료로 활용될 예정이오니 불법 펌을 금합니다.



- 2013.02.05 랑이 씀 -


  






반응형
반응형
PHP 에서 JQuery 를 이용하여 Ajax를 이용할때 아래와 같은 방법으로 하는것이 가장 이상적이다.

내가 테스트 한 환경은 다음과 같다

WAS : euc-kr
DB : Mysql euc-kr
환경이다.


1. Jquery 를 이용하여 Ajax호출한다.
   ( 단 한글데이터의 경우 encodeURIComponent를 이용하여 UTF-8 로 인코딩 시켜야 한다. )


  params = "mode=getMember";
  params += "&user_id=" + form.pass_id.value;
  params += "&name=" + encodeURIComponent(form.pass_name.value); // (1) UTF-8로 인코딩한다.
  params += "&reg_num1=" + form.pass_regnum1.value;
  params += "&reg_num2=" + form.pass_regnum2.value;
  
  $.ajax({
   type : "POST",
   url : "./member_join_logic.php",
   async: false,
   dataType : "text",
   data : params,
   beforeSend : function(xmlHttpRequest){
   },
   success :  function(msg) {  
    
    var data = eval("(" + msg + ")");

    if(data){
     alert(data[0].NAME); // (4) 결과값을 출력한다.
    }else{
     alert("일치하는 회원정보가 없습니다.");
    }
    },
    error : function(xmlHttpRequest, textStatus, errorThrown){
     alert("회원 실명인증 중 오류가 발생하였습니다. [" + textStatus + "]"); 
    }
   });



2. Mysql Data를 조회한다.
   ( 조회시 한글 파라미터 값은 별도로 euc-kr로 다시 인코딩 시켜서 맵핑시킨다. )


3. 결과값을 요청한 페이지로 json_encode 함수를 이용하여 리턴시킨다.


   $SQL  = " SELECT * FROM testDB WHERE 1=1 ";
   if($user_id){ $SQL .= " AND user_id ='".$user_id."' "; }
   if($name){ $SQL .= " AND name ='".decode_cp949($name)."' "; } // (2) EUC-KR로 인코딩하여 DB에 맵핑한다.
   if($reg_num1){ $SQL .= " AND reg_num1 ='".$reg_num1."' "; }
   if($reg_num2){ $SQL .= " AND reg_num2 = sha1('".$reg_num2."') "; }
   
   $result = mysql_query($SQL);

   
   
     while ($row = mysql_fetch_assoc($result)) {         
          for ($i=0; $i < mysql_num_fields($result); $i++) {
              $info = mysql_fetch_field($result, $i);
      $row[$info->name] = decode_utf8($row[$info->name]); // (3) 결과값을 다시 UTF-8로 인코딩한다.
          }
          $rows[] = $row;
       }
     
       echo json_encode($rows); // JSON 으로 리턴한다.


[ 참조 ]
위 예제에서 사용한 인코딩 함수는 아래와 같다.

  /**
 * UTF-8 => CP949 로 디코딩 Function
 */
 function decode_cp949($data){
  return iconv("UTF-8", "CP949", rawurldecode($data)); 
 }
 
 /**
 * CP949 => UTF-8 로 디코딩 Function
 */
 function decode_utf8($data){
  return iconv("CP949", "UTF-8", rawurldecode($data)); 
 }



4. 최초 요청받은 페이지에서는 받은 값을 출력한다.

위 과정처럼 하면 한글 데이터도 정상적으로 DB와 통신 가능하다.

이제 삽질은 제발 그만하자 흑흑흑....

이상 JQuery를 이용하여 PHP에서 ajax통신시 한글의 문제점 해결방법이다.

반응형

'Program > PHP' 카테고리의 다른 글

[ PHP 파라미터 출력하여 알아보는 방법 ]  (0) 2011.05.30
[ PHP 에서 DB결과 처음포인터 위치하기 ]  (0) 2010.08.28
[ PHP E-mail 전송 ]  (6) 2010.07.03
PHP Excel Download Module  (21) 2010.06.22
[ PHP5 공통모듈 ]  (0) 2010.06.10

+ Recent posts