HTTP服务获取/显示错误的值

时间:2014-12-10 10:52:45

标签: flex flash-builder4.5 httpservice

我通过http服务调用填充高级数据网格。我在我的mxml文件中定义了一个HTTPService,如下所示:

<mx:HTTPService id="srvReadMicroData"/>

它收到这个简单的&#34; XML文件&#34; ...

<MicroDataSet>
  <Row arb_id='982215013000269378' />
</MicroDataSet>

......通过这些功能:

public function readMicroData():void
{
  ...
  srvReadMicroData.url = myUrl;
  srvReadMicroData.method = "POST";
  srvReadMicroData.addEventListener("result", httpReadMicroDataResult);
  srvReadMicroData.send();
}

public function httpReadMicroDataResult(event:ResultEvent):void {
  myGrid.dataProvider=srvReadMicroData.lastResult.MicroDataSet.Row;
  myGrid.validateNow();
}

当我在Flashbuilder中运行debug并查看http服务的值时,后三位数字是不同的。当我执行toString()时,值会再次更改。似乎发生了大量的事情:

  

srvReadMicroData.lastResult.IseeMicroDataSet.Row [&#34; arb_id&#34;] - &gt;   982215013000269440   srvReadMicroData.lastResult.IseeMicroDataSet.Row [&#34; arb_id&#34]。的toString()    - &GT; 982215013000269300

关于如何解决这个问题的任何想法?

2 个答案:

答案 0 :(得分:0)

您尝试获取的值似乎大于Flex最大值,因此它会对其进行舍入。 你可以添加一个&#34; A&#34;在您的&#39; arb_id&#39;开头的一封信这样的字符串:

<MicroDataSet>
    <Row arb_id='a982215013000269378' />
</MicroDataSet>

通过这种方式,flex获得了#arb_id&#39;对象作为字符串。然后你可以将它子串起来删除&#39; a&#39;字符。 最后,您将拥有一个完全代表xml值的字符串。

希望有所帮助

答案 1 :(得分:0)

如果 srvReadMicroData.lastResult 包含 XML 数据,那么您可以按以下方式处理:

private var _xml:XML;
[Bindable]
private var rowArrayCollection:ArrayCollection = new ArrayCollection();
public function httpReadMicroDataResult(event:ResultEvent):void {
    _xml = XML(srvReadMicroData.lastResult);
    for each (var row:XML in _xml.Row) {
        var rowObject:Object = new Object();
        rowObject.arb_id = row.attribute("arb_id");
        //trace("rowID: " + rowObject.arb_id);
        rowArrayCollection.addItem(rowObject);
    }
    myGrid.dataProvider = rowArrayCollection;
}