Функция flex3 не возвращает строку должным образом
-
19-08-2019 - |
Вопрос
я пытаюсь вернуть строковое значение из метода внутри тега скрипта, однако он всегда возвращает объект, и я не могу получить строковое значение.
Вот код:
я получаю объект, возвращенный из вызова веб-службы ;;
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;
}