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
