0

我对 HTTPService 及其返回的数据有疑问。

好吧,让我们考虑一下这个 XML:

<PhotoGalleryData>
    <Photo>
        <id>1</id>
        <name>Summer Vacation</name>
        <description>In vacation</description>
        <fullImage>originalImg/1.JPG</fullImage>
    </Photo>
    <Photo>
        <id>2</id>
        <name>Winter Vacation</name>
        <description>coold</description>
        <fullImage>originalImg/2.JPG</fullImage>
    </Photo>
</PhotoGalleryData>

如您所见,我有两个Photo实例,它们将使用 HTTPService 检索,然后在同一个 HTTPService 的 Result Event 上,我希望他计算他返回的名为Photo.lastResult的实例数量。

这是一个愚蠢的问题,但我在 Adob​​e Docs 的任何地方都找不到它。

当然,非常感谢任何帮助、提示、建议。


梅多瓦

我必须是盲人什么的,因为它仍然返回 0。

这里缺少什么?

MXML

<mx:HTTPService id="getData"
    url="{XMLDataFileLocation}"
    showBusyCursor="true"
    fault="getDataFaultHandler()"
    result="getDataResultHandler(event)"/>

动作脚本

import mx.controls.Alert;
import mx.rpc.events.ResultEvent;
private var xmlData:XMLList;
private var numItems:int;
private function getDataResultHandler(evt:ResultEvent):void
{
    if (evt.result.PhotoGalleryData)
    {
        xmlData = XML(evt.result).descendants("Photo");
        numItems = xmlData.length();
        Alert.show('Nº '+numItems,'num de Photo');
    }
}
4

2 回答 2

2

在您拥有的 http_result 函数中,您将把这些数据放在一个 XMLList 中,例如,然后您可以调用 xmllist.length();

private var xmlData:XMLList;
private var numItems:Integer;

private function HttpResult(evt:ResultEvent):void {
    if (evt.result.PhotoGalleryData) {
        xmlData = XML(evt.result).descendants("Photo");
        numItems = xmlData.length();
    }
}

编辑:执行以下操作...

改变

<mx:HTTPService id="getData"
    url="{XMLDataFileLocation}"
    showBusyCursor="true"
    fault="getDataFaultHandler()"
    result="getDataResultHandler(event)"/>

到...

<mx:HTTPService id="getData"
    url="{XMLDataFileLocation}"
    resultFormat="e4x";
    showBusyCursor="true"
    fault="getDataFaultHandler()"
    result="getDataResultHandler(event)"/>

这对我有用。

于 2009-11-12T21:27:54.543 回答
0

只需执行以下操作。它会解决你的问题;)

private var xmlData:XMLList;
private var numItems:Integer;

private function HttpResult(evt:ResultEvent):void {
    if (evt.result.PhotoGalleryData) {

        numItems = ArrayCollection(evt.result.PhotoGalleryData.Photo).length;

    }
}

RStanvir

于 2009-11-13T15:10:35.787 回答