본문 바로가기

웹개발/Flex

Flex에서 PHP로 데이터 보내기

PHP에서 Flex로 데이터를 보내는 방법은 많은데, 그 반대는 찾아봐도 제대로된 정보가 없어서 구현해 보았습니다.

유용하게 쓰세요 :)

<fx:Declarations>
  <!-- Place non-visual elements (e.g., services, value objects) here -->

//fx:Declarations 안에 아래 내용을 추가해주세요
  <mx:HTTPService id="saveData" url="http://localhost/saveFromFlex.php"
      method='POST'
      result='OnHTTPResult(event);'
      fault='OnHTTPFault(event);'
      resultFormat='text'>
   <mx:request xmlns="">
   </mx:request>
  </mx:HTTPService>

 </fx:Declarations>

// 아래 함수들을 Script 안에 넣어주세요.

   public function OnHTTPResult(event:ResultEvent):void
   {
    txtResult.htmlText= event.result.toString(); 
   }


   public function OnHTTPFault(event:FaultEvent):void
   {
    txtResult.text= event.fault.toString(); 
   }


   public function saveToDB(str:String):void
   {
    var params = new Array();
    params["json"]=str; // params를 여러개 넣으셔도 됩니다. json이라는 변수를 PHP에서 $_POST['json']으로 받게 됩니다.
    saveData.send(params);
   }

// 아래 함수는 ArrayCollection을 PHP로 보낼 방법을 연구하다가, JSON형식의 String으로 보내면 좋을 것 같아서 만들어보았습니다.

   public static function arrayCollectionToString( myArrayCollection:ArrayCollection ):String
   {            
    var array1:Array;
    var array2:Array;
    var tmpStr:String;
    array1 = new Array();
    for each( var obj:Object in myArrayCollection )             
    {                 
     array2 = new Array();
     for ( var obj2:Object in obj )             
     {
      if(obj[obj2] != null) tmpStr=obj[obj2];
      else tmpStr="";
      array2.push('"'+obj2+'":"'+tmpStr+ '"');
     }              
     array1.push("{"+array2.join(", ")+"}");
    }
    return "["+array1.join(", ")+"]";
   }

 

아래 코드를 임의의 위치에서 실행해주세요.

strSendToServer=arrayCollectionToString(arrayCollectionTojiBasicInfo);

saveToDB(strSendToServer);

 

PHP측 코드입니다.(JSON 형식이기 때문에 언어에 구애받지 말고 쓰시면 되겠습니다.)

$data=json_decode(stripslashes($_POST['json']),true);

이렇게 하면 data라는 변수에서 구조 그대로 배열로 받게 됩니다!