我的应用程序中有一个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>
有没有办法可以发送列表中元素的标签?
答案 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