La función flex3 no devuelve String correctamente
-
19-08-2019 - |
Pregunta
Estoy tratando de devolver un valor de cadena de un método dentro de mi etiqueta de script, sin embargo, siempre devuelve un objeto y no puedo obtener el valor de cadena.
Aquí está el código:
recupero el objeto devuelto de una llamada de servicio web ;;
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;
}
la alerta imprime bien el nombre, sin embargo, cuando trato de usar el valor en mi próximo método (que llama al servicio web que llama a getNameResults) obtengo la etiqueta de objeto
private function getInfo(roomName:String):String{
var site:String =userRequest.getRoomZoneInfo(roomName);
return site;
}
sin embargo, el valor devuelto aquí es [object AsyncToken]
alguna idea?
Solución
Está configurando el resultado de getRoomZoneInfo ()
en el sitio variable, pero lo está convirtiendo en una Cadena. getRoomZoneInfo
está devolviendo un objeto, y debido a que la variable en la que lo está pegando es una cadena, es como llamar a .toString ()
en el objeto, lo que produce el [objeto < code> AsyncToken ].
Básicamente, si getRoomZoneInfo
es una llamada de servicio web, no puede obtener la información que está buscando aquí, debe esperar hasta que el resultado regrese y obtener la cadena que está buscando allí. ¿Tiene sentido?
Otros consejos
Su método getInfo () no está llamando a getNameResults (). Está llamando a getRoomZoneInfo (). No sé qué hace ese método, pero supongo que está devolviendo un Objeto, no una Cadena.
Recibo [ ObjectAsyncToken
] en la variable a en lugar de cadena, ya que estoy recuperando datos de la base de datos
private function init():void
{
ro.initView();
var a:String=String(ro.getID());
}
función de base de datos:
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;
}