2010-11-20 45 views
0

我試圖將數據從SQL數據庫提供給FLEX,在中間使用php腳本。在調試期間,我在網絡監視器和「變量」窗口中看到消息正文中的數據,但我無法將它們檢索到XML。FLEX:無法從event.result檢索XML

以下(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 

我想

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

但隨後myXML2我只得到 「的翻譯:」 當我正在改變鑄造方法:

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

我在myXML2中接收到null。我不知道發生了什麼事 ?我也將發佈PHP腳本,以防萬一是錯誤的有(可能是錯誤的「\ n」標誌)

<?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 嗯,我能夠改變節點的ArrayCollection通過:

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

但我不能以這種方式提供數據網格。

回答

1

好吧,錯誤是愚蠢的。我沒有指定的HTTPService的resultFormat我離開它違約,並讀取XML我應該將其設置爲「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"**> 

現在XML(event.result)工作正常。

+0

很高興你找到了你的答案。一定要標記自己的答案。 – JeffryHouser 2010-11-20 15:45:05

0

我會嘗試(並捕獲)將event.result傳遞給構造函數,而不是使用「as」投射。這樣,您就可以從一個字符串中創建一個新的XML對象,而不是創建一個空白文檔,然後將其轉換爲XML。希望工程。

+0

創造出字符串不工作 - IM仍然得到的翻譯:事情。 Mayby的問題在於php。我試圖刪除'echo'php中的所有\ r \ n。 PS。沒有它仍然沒有工作 – Thomas 2010-11-20 10:27:45

0

我不認爲你需要的

<?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> 

得到故障:

(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