flex3函数没有正确返回String

时间:2009-01-22 14:50:21

标签: flex actionscript return

我试图从我的脚本标签内的方法返回一个字符串值但是它总是返回一个对象而我无法得到字符串值。

以下是代码:

我检索从webservice调用返回的对象;;

    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的Web服务)时,我得到了对象标记

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

但是这里返回的值是[object AsyncToken]

任何想法?

3 个答案:

答案 0 :(得分:2)

您正在将getRoomZoneInfo()的结果设置为变量网站,但是您将其作为字符串进行投射。 getRoomZoneInfo正在返回一个对象,因为你所附加的变量是一个字符串,就像在对象上调用.toString()一样,这就产生了[object AsyncToken]。

基本上如果getRoomZoneInfo是一个网络服务电话,你无法在这里得到你想要的信息,你必须等到结果回来并获得你想要的字符串。有意义吗?

答案 1 :(得分:1)

你的getInfo()方法没有调用getNameResults()。它正在调用getRoomZoneInfo()。我不知道那个方法做了什么,但我猜它正在返回一个Object,而不是一个String。

答案 2 :(得分:0)

我在变量a而不是字符串中得到[ObjectAsyncToken],因为我正在从数据库中检索数据

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;
}