obtengo correctamente los datos del archivo JSONSample.txt y los muestra por pantalla como quiero pero cuando le doy a actualizar no logro sobreescribir los datos del mismo archivo.
JSONSample.txt
Código :
[{"id":"2","name":"Strapless Wedding Dress Tips","author":"Ramona Waters","rating":"1"},{"id":"3","name":"Coordinating Your Brides Maids","author":"Ericka Brown","rating":"3"}]
¿sabeis de alguna idea? El mxml es este, simplemente extrae la informacion del archivo de texto y lo muestra en un datagrid. ¿Podría ser la llamada al httpservice que no es metodo post?
Código ActionScript :
<?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="536" height="416"> <fx:Declarations> <s:HTTPService id="getData" url="JSONSample.txt" useProxy="false" method="GET" resultFormat="text" result="getPHPData(event)"> </s:HTTPService> <mx:HTTPService id="sendData" url="JSONSample.txt" useProxy="false" method="POST" resultFormat="text" result="updatedPHPDataResult(event)"> </mx:HTTPService> </fx:Declarations> <fx:Script> <![CDATA[ import mx.events.DataGridEvent; import mx.controls.TextInput; import mx.rpc.events.ResultEvent; import mx.collections.ArrayCollection; import com.adobe.serialization.json.JSON; [Bindable] private var dataArray:ArrayCollection; private function initDataGrid():void { dataArray = new ArrayCollection(); getData.send(); } private function getPHPData(event:ResultEvent):void { var rawArray:Array; var rawData:String = String(event.result); rawArray = JSON.decode(rawData) as Array; dataArray = new ArrayCollection(rawArray); } private function sendPHPData():void { var objSend:Object = new Object(); var dataString:String = JSON.encode(dataArray.toArray()); trace("TEXTO LEIDO: " + dataString); //sendData.send(dataString); dataString = escape(dataString); objSend.setTutorials = "true"; objSend.jsonSendData = dataString; sendData.send(objSend); //trace(dataString); } private function updatedPHPDataResult(event:ResultEvent):void { var file:File = File.documentsDirectory; file = file.resolvePath("JSONSample.txt"); var fileStream:FileStream = new FileStream(); fileStream.open(file, FileMode.WRITE); fileStream.writeUTFBytes("HOLA"); fileStream.close(); lblStatus.text = "";//String(event.result); } private function checkRating(event:DataGridEvent):void { var txtIn:TextInput = TextInput(event.currentTarget.itemEditorInstance); trace("Valor: "+txtIn.text); var curValue:Number = Number(txtIn.text); if(isNaN(curValue) || curValue < 0 || curValue > 10) { event.preventDefault(); } } ]]> </fx:Script> <fx:Binding source="dgData.dataProvider as ArrayCollection" destination="dataArray"/> <s:Panel x="0" y="0" width="525" height="406" title="Lectura"> <mx:DataGrid id="dgData" x="10" y="10" width="495" height="241" dataProvider="{dataArray}" creationComplete="{initDataGrid()}" editable="true" itemEditEnd="{checkRating(event)}"> <mx:columns> <mx:DataGridColumn headerText="Name" dataField="name" editable="false"/> <mx:DataGridColumn headerText="Author" dataField="author" width="115" editable="false"/> <mx:DataGridColumn headerText="Rating" dataField="rating" width="50" editable="true" /> </mx:columns> </mx:DataGrid> <mx:Button id="butUpdate" x="9" y="258" height="58" label="UpdateDatabase" click="{sendPHPData()}"/> <mx:Label id="lblStatus" x="140" y="261" width="365" height="74"/> </s:Panel> </s:WindowedApplication>
haber si me podeis echar una ayudita, muchas gracias y de nuevo, feliz 2.012
Alvaro