Функция flex3 не возвращает строку должным образом - PullRequest
0 голосов
/ 22 января 2009

Я пытаюсь вернуть строковое значение из метода внутри тега скрипта, однако он всегда возвращает объект, и я не могу получить строковое значение.

Вот код:

я получаю объект, возвращенный из вызова веб-службы ;;

    private function getNameResults(e:ResultEvent):String{
     var name:Array = new Array(e.result);
     var site:String = site_names[0].toString();
     Alert.show("site - " +site);
     return site;
}

предупреждение выводит имя в порядке, однако, когда я пытаюсь использовать значение в моем следующем методе (который вызывает веб-сервис, который вызывает getNameResults), я получаю тег объекта

private function getInfo(roomName:String):String{
    var site:String =userRequest.getRoomZoneInfo(roomName);
    return site;
}

однако возвращаемое здесь значение [object AsyncToken]

есть идеи?

Ответы [ 3 ]

2 голосов
/ 22 января 2009

Вы устанавливаете результат getRoomZoneInfo() для переменной сайта, но вы преобразуете его как строку. getRoomZoneInfo возвращает объект, и поскольку переменная, в которую вы его втыкаете, является строкой, это похоже на вызов .toString() объекта, что приводит к [объекту AsyncToken].

В основном, если getRoomZoneInfo - это вызов веб-службы, вы не можете получить информацию, которую ищете здесь, вам нужно подождать, пока вернется результат, и получить искомую строку. Имеет смысл?

1 голос
/ 22 января 2009

Ваш метод getInfo () не вызывает getNameResults (). Это вызывает getRoomZoneInfo (). Я не знаю, что делает этот метод, но я предполагаю, что он возвращает объект, а не строку.

0 голосов
/ 06 июля 2010

Я получаю [ObjectAsyncToken] в переменной a вместо строки, так как я получаю данные из базы данных

private function init():void
{
   ro.initView();
   var a:String=String(ro.getID());
}

функция базы данных:

public void initView()
{
  try
  {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection conn = DriverManager.getConnection("jdbc:odbc:alarmdsn"," "," ");
    Statement s = conn.createStatement();
    ResultSet r = s.executeQuery("select * from alarm");
    while(r.next()) {
      a = r.getString(1);             
    }
  }
  catch(Exception e) {}
}

public String getID() {
   return a;
}
...