HTTPService结果 - 检查具有指定名称的项目数

时间:2009-11-12 21:17:53

标签: flex flex3 httpservice

我对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上,我希望他计算名为<的实例数量strong>照片他返回的是.lastResult

这是一个愚蠢的问题,但我无法在Adobe Docs中找到它。

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


Medoix

我必须是盲人或其他什么,因为它仍然会返回0。

这里缺少什么?

MXML

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

的ActionScript

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');
    }
}

2 个答案:

答案 0 :(得分: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)"/>

这对我有用。

答案 1 :(得分: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