如何创建动态表单?

时间:2010-09-09 15:34:02

标签: flex json

我想创建一个由复选框组成的表单,该表单基于存储在数据库中的数据,并通过JSON格式的RESTful Web服务进行访问。此外,基于以上述方式存储和访问的其他数据,需要预先检查这些复选框中的一些。根据我的理解,我可以使用repeater创建复选框,但我不确定以下内容并感谢一些指导/建议。

  1. 如何使用JSON接收/发送数据(使用Flex)
  2. 我如何'预先检查'复选框。使用jsp,我会迭代复选框选项的集合,然后迭代先前选择的选项,如果两个值匹配,我会将checked='yes'添加到复选框标记。

1 个答案:

答案 0 :(得分:0)

这应该让你开始。

以下是与JSON服务进行通信的方法:

<mx:HTTPService id="service" resultFormat="text" url="http://json service url" result="onJSONLoad(event)" />
  • id - 为控件赋予变量名称,以便稍后引用它。
  • url - 指向我们正在加载的JSON数据的网址
  • resultFormat - 我们希望数据返回给我们的格式。(在这种情况下,只是原始文本)。
  • result - 数据加载时调用的事件处理程序。

然后获取数据:

                    import mx.rpc.events.ResultEvent;
            import com.adobe.serialization.json.JSON;

            private function onJSONLoad(event:ResultEvent):void
            {
                //get the raw JSON data and cast to String
                var rawData:String = String(event.result);

                //decode the data to ActionScript using the JSON API
                //in this case, the JSON data is a serialize Array of Objects.
                var arr:Array = (JSON.decode(rawData) as Array);

                //do something with the Array
}

发送数据:

<mx:HTTPService id="sendData" url="url of JSON service"
   useProxy="false" method="GET" resultFormat="text"
   result="updatedPHPDataResult(event)">
</mx:HTTPService>

用于触发发送事件的UI元素

<mx:Button x="10" y="259" label="UpdateDatabase" id="butUpdate" click="{sendPHPData()}"/>

现在,这是您的ActionScript方法:

private function sendPHPData():void
{
  var objSend:Object = new Object();
  var dataString:String = JSON.encode(dataArray.toArray());
  dataString = escape(dataString);
  objSend.setTutorials = "true";
  objSend.jsonSendData = dataString;
  sendData.send(objSend);
}

要显示它的作品

private function updatedPHPDataResult(event:ResultEvent):void
{
  lblStatus.text = String(event.result);
}