Функция flex3 не возвращает строку должным образом

StackOverflow https://stackoverflow.com/questions/469402

Вопрос

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

Вот код:

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

    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]

есть идеи?

Это было полезно?

Решение

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

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

Другие советы

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

Я получаю [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;
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top