将数组从flex传递给php

时间:2009-11-01 05:11:00

标签: flex

我的应用程序中有一个TextInput和一个List。我想将TextInput中写入的信息和列表中所选选项的名称发送到php文件。

以下HTTPService将TextInput的文本和列表中所选项目的索引精确地发送到php文件,但selectedItems没有按预期工作。它不会发送所选项目的名称

<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>

现在,我的php文件结果:

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

列表如下:

<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" label="Pepper" data="#0000FF"/>
            </mx:Array>
    </mx:dataProvider>

有没有办法可以发送列表中元素的标签?

2 个答案:

答案 0 :(得分:1)

您需要编写一个函数来从对象中创建列表。

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(",");
}

这是一个静态函数,但如果要扩展该类,可以使其成为List的成员。

答案 1 :(得分:1)

我不确定您是否想要涉及另一个框架,但我使用Zend AMF作为解决此类问题的方法。它允许您来回传递Flex和PHP对象,而无需手动创建或解析XML中介。

您可以在以下网址阅读更多内容: http://framework.zend.com/manual/en/zend.amf.html