开发者

Passing array from flex to php

开发者 https://www.devze.com 2022-12-10 03:25 出处:网络
I have a TextInput and a List in my application. I want to send the information written in TextInput and the names of the selected options from the list to a php file.

I have a TextInput and a List in my application. I want to send the information written in TextInput and the names of the selected options from the list to a php file.

Following HTTPService sends the TextInput's text and the indices of selected items from list finely to a php file but the selectedItems is not working as i expected. It does not send the names of the selected items

<mx:HTTPService id="configureService" url="configure.php" resultFormat="text" method="POST">
    <mx:request xmlns="">
         <textInput>
            {textInput.text}
         </textInput>
         <selectedFoodNames>
            {foodList.selectedItems.join(",")}   <!-- Problem in this LOC -->
         </selectedFoodNames>
         <selectedFoodIndices>
            {foodList.selectedIndices.join(",")}
         </selectedFoodIndices>
    </mx:request>
</mx:HTTPService>

Now, my php file results:

echo $_POST['textInput'];  //Output the right answer
echo $_POST['selectedFoodNames']; //Outputs:  "[object Object],[object Object],[object Object]" if three items are selected from the list
echo $_POST['selectedFoodIndices']; //Outputs the indices of selected items separated by comma

The list look like:

<mx:List id="foodList" x="26.95" y="54" width="231.55" height="236.9" allowMultipleSelection="true">
    <mx:dataProvider>
        <mx:Array>
                <mx:Object id="Sugar" label="Sugar" data="#FF0000"/>
            <mx:Object id="Salt" label="Salt" data="#00FF00"/>
            <mx:Object id="Pepper" l开发者_如何转开发abel="Pepper" data="#0000FF"/>
            </mx:Array>
    </mx:dataProvider>

Is there a way i can send the labels of the elements in list?


You'll need to write a function to make a list from the objects.

public static function selectedItemsToLabels(list:List):String {
  var a:Array = [];
  for each(var o:Object in list.selectedItems) {
    a.push(o.label);
  }
  return a.join(",");
}

This is a static function but you can make it a member of a List if you want to extend that class.


I'm not sure if you want to get another framework involved, but I've used Zend AMF as a solution to such problems. It lets you pass Flex and PHP objects back and forth without having to manually create or parse XML intermediaries.

You can read more at: http://framework.zend.com/manual/en/zend.amf.html

0

精彩评论

暂无评论...
验证码 换一张
取 消