2009년 11월 18일 수요일

OpenSocial 플랫폼에서 Jquery ajax의 효과적 사용

오픈소셜로 애플리케이션들이 속속 만들어지고 있다.

한국의 오픈소셜 컨테이어는 오픈소셜사이트의 컨테이너 목록 을 보면 cyworld와 IDTail 두곳이 있다.

오픈소셜에 애플리케이션을 만들기 위해 기존의 사이트를 오픈소셜용으로 재작업 하는데 기존의 서비스가 Jquery 로 구동되는지라 makeRequest 를 이용하여 JQuery의 Ajax함수를 오버라이드 하여 사용하니 개발 시간적인 측면에서 상당히 효과적이였다.

  1. /* overwrite $.ajax to opensocial ajax */
  2. var global_callback_func = "";
  3. function ajaxRequest(url, callback_func, post_params){
  4.       var queryString = "";
  5.       for (k in post_params) {
  6.           if(typeof post_params[k] == "object"){
  7.             $.each(post_params[k],function(name,value){
  8.                 if(name == "name"){
  9.                     queryString += "&" + value + "=";
  10.                 }
  11.                 if(name == "value"){
  12.                     queryString += encodeURIComponent(value);
  13.                 }
  14.             });    
  15.           }else{
  16.               queryString += "&" + k + "=" + encodeURIComponent(post_params[k]);
  17.           }
  18.       }
  19.       var osParams = {};
  20.       osParams[gadgets.io.RequestParameters.METHOD] = gadgets.io.MethodType.POST;
  21.       osParams[gadgets.io.RequestParameters.POST_DATA] = queryString;
  22.       osParams[gadgets.io.RequestParameters.AUTHORIZATION] = gadgets.io.AuthorizationType.SIGNED;
  23.       global_callback_func = callback_func;
  24.       gadgets.io.makeRequest(url, makeRequest_callback, osParams);
  25. }
  26. function makeRequest_callback(result){
  27.     global_callback_func(result.data);
  28. }
  29. $.ajax = function(objAjax){
  30.     ajaxRequest(objAjax.url, objAjax.success, objAjax.data);    
  31. }
* This source code was highlighted with Source Code Highlighter.

Ajax 라이브러리를 모두 포함 시키고 마지막에 위의 코드로 오버라이드 하면 기존의 자바스크립트 변경을 최소화 하여 오픈소셜 컨테이너로 포팅 할수 있다.