FLEX: не удается получить XML из event.result - PullRequest
0 голосов
/ 20 ноября 2010

Я пытаюсь передать данные из базы данных SQL в FLEX, используя php-скрипт посередине.Во время отладки я вижу данные в теле сообщения в сетевом мониторе и в окне «Переменная», но не могу получить их в 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.Понятия не имею, что происходит?Я также выложу скрипт 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;

но я не могу передать dataGrid таким образом.

Ответы [ 4 ]

1 голос
/ 16 октября 2011
<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
1 голос
/ 20 ноября 2010

ОК, ОШИБКА была глупой.Я не указал resultFormat в httpService, я оставил его по умолчанию, и чтобы прочитать 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 голосов
/ 20 ноября 2010

Не думаю, что вам нужна строка

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

.

0 голосов
/ 20 ноября 2010

Я бы попробовал (и поймал) передачу event.result в конструктор, а не приведение с "as".Таким образом, вы создаете новый XML-объект из строки вместо того, чтобы создавать пустой документ, а затем переводите его в XML.Надеюсь, что это работает.

...