2009-11-12 10 views
0

J'ai une question à propos de HTTPService et des données qu'elle renvoie.HTTPService Résultat - vérification du nombre d'éléments avec un nom spécifié

permet de bien considérer ce 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> 

Comme vous le voyez, j'ai deux cas de photo, qui serait récupéré à l'aide d'un HTTPService, eh bien sur l'événement Résultat de cette même HTTPService je voudrais lui le compte le nombre d'instances nommées Photo il comme retourné sur est .lastResult.

Cette question est stupide, mais je ne la trouve nulle part dans Adobe Docs.

Bien sûr toute aide, suggestion, suggestion est grandement appréciée.


Medoix

Je dois être aveugle ou quelque chose, car elle retourne toujours 0.

Il manque quelque chose ici?

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

Répondre

2

dans la fonction http_result vous vous mettrez ces données dans un XMLList pour un exemple et vous pouvez appeler le XMLList. longueur();

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

EDIT: Est-ce le ci-dessous ...

changement

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

Pour ...

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

Cela fonctionne pour moi.

+0

étrange numItems retourne la valeur de 0 au lieu de 2. –

+0

Ce ne serait pas quelque chose comme ça? numItems = xmlData.child ("Photo"). length(); –

+0

désolé j'ai manqué quelque chose et ai mis à jour dans le code. – medoix

0

Procédez comme suit. il résoudra vos probs;)

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

+0

Flex ne signale aucune erreur, mais Flash fait: Erreur # 1034: La coercition de type a échoué: impossible de convertir XMLList @ 2107551 en mx.collections.ArrayCollection. –

Questions connexes