2010-11-20 5 views
0

J'essaie de fournir des données de la base de données SQL à FLEX, en utilisant un script php au milieu. Je vois les données dans le corps du message dans le Moniteur réseau et dans la fenêtre "Variable" pendant le débogage, mais je ne peux pas les récupérer en XML.FLEX: impossible de récupérer XML à partir de event.result

ci-dessous (event.message.toString())

(mx.messaging.messages::AcknowledgeMessage)#0 
    body = "<?xml version="1.0" encoding="UTF-8"?> 
<articles> 
<node><id>2</id> 
<articleid>2</articleid> 
<nrporzadkowy>2</nrporzadkowy> 
<tresc>moja tresc</tresc> 
<rodzaj>textFlow</rodzaj> 
</node> 
</articles>" 
    clientId = "DirectHTTPChannel0" 
    correlationId = "C8993E66-DF60-FE63-73D3-6700CA497221" 
    destination = "" 
    headers = (Object)#1 
    DSStatusCode = 200 
    messageId = "475F2475-A915-29AB-4364-6700D08BD7D2" 
    timestamp = 0 
    timeToLive = 0 

J'essaie

protected function pobieranieElementow_resultHandler(event:ResultEvent):void 
{ 
    var myXML2:XML = new XML(); 
    myXML2 =XML(event.result); 
} 

mais en myXML2 je reçois seulement "[object Object]", quand je changer la méthode de coulée à:

protected function pobieranieElementow_resultHandler(event:ResultEvent):void 
    { 
     var myXML2:XML = new XML(); 
     myXML2 =event.result as XML; 
    } 

Je reçois null dans myXML2. Je ne ai aucune idée de ce qui se passe ? Je posterai aussi PHP script juste au cas où quelque chose est faux, il (peut-être mal '\ n' signes)

<?php 
    header('Content-type: text/xml; charset=utf-8'); 
    echo '<?xml version="1.0" encoding="utf-8"?>'; 
    echo "\r\n"; 
    $link = mysql_connect("HOST", "XXXXX", "XXXXDS"); 
    mysql_select_db("DATABASEXXXX"); 
    if (!$link) { 
    printf("Connect failed: %s\n", mysql_connect_error()); 
    exit(); 
} 
    $sql = sprintf("SELECT id,articleid,nrporzadkowy,tresc,rodzaj from elements where articleid = '%s'",$_POST["id"]); 
    $result = mysql_query($sql); 
    $beg = '<articles>'; 
    $end = '</articles>'; 
    echo "$beg\r\n"; 
    while($row = mysql_fetch_assoc($result)) 
    { 
    echo '<node>'; 
    echo '<id>'; 
    echo $row["id"]; 
    echo '</id>'; 
    echo "\r\n"; 
    echo '<articleid>'; 
    echo $row["articleid"]; 
    echo '</articleid>'; 
    echo "\r\n"; 
    echo '<nrporzadkowy>'; 
    echo $row["nrporzadkowy"]; 
    echo '</nrporzadkowy>'; 
    echo "\r\n"; 
    echo '<tresc>'; 
    echo $row["tresc"]; 
    echo '</tresc>'; 
    echo "\r\n"; 
    echo '<rodzaj>'; 
    echo $row["rodzaj"]; 
    echo '</rodzaj>'; 
    echo "\r\n"; 
    echo '</node>'; 
    echo "\r\n"; 
    } 
    echo $end; 
    mysql_free_result($result); 
    mysql_close($link); 
?> 

PS Eh bien, je suis en mesure de changer les noeuds à ArrayCollection via:

var array:ArrayCollection = event.result.articles.node; 

mais je ne peux pas alimenter le dataGrid de cette façon.

Répondre

1

OK, ERREUR était stupide. Je ne spécifiait pas le resultFormat dans HttpService je l'ai laissé par défaut, et de lire xml je devrais le mettre à « e4x »

<mx:HTTPService id="pobieranieElementow" 
         url="URL" 
         useProxy="false" 
         method="POST" 
         result="pobieranieElementow_resultHandler(event)" 
         fault="pobieranie_faultHandler(event)" 
         {this was not set->}**resultFormat="e4x"**> 

Et maintenant XML (event.result) fonctionne correctement.

+0

Content que vous ayez trouvé votre réponse. Assurez-vous de marquer votre propre réponse en tant que telle. – JeffryHouser

0

Je voudrais essayer (et attraper) passer event.result dans le constructeur plutôt que de lancer avec "as". De cette façon, vous créez un nouvel objet XML à partir d'une chaîne au lieu de créer un document vierge, puis de le convertir en XML. J'espère que cela fonctionne.

+0

Création de chaîne ne fonctionne pas - im faire encore chose [objet Object]. Mayby le problème réside dans php. Je vais essayer de supprimer tout le \ r \ n dans 'echo' php. PS. Non ça ne fonctionne toujours pas – Thomas

0

Je ne pense pas que vous avez besoin de la ligne

<?xml version="1.0" encoding="UTF-8"?>

.

1
<mx:HTTPService id="getDataUser" 
       url="http://localhost/test/db.php" 
       resultFormat="e4x" useProxy="false" 
       result="onResultData(event)" 
       fault="onFaultData(event)">  
</mx:HTTPService> 

get faute:

(mx.messaging.messages::AcknowledgeMessage)#0 
    body = "<user>abc</user>" 
    clientId = "DirectHTTPChannel0" 
    correlationId = "147F8A12-7055-5FD4-0584-0B8A07850826" 
    destination = "" 
    headers = (Object)#1 
    DSStatusCode = 200 
    messageId = "82772E32-1D8A-4A73-C5C8-0B8A07C30EE0" 
    timestamp = 0 
    timeToLive = 0 
Questions connexes