2009-01-22 169 views
0

即時嘗試從我的腳本標記中的方法返回一個字符串值,但它總是返回一個對象,我不能得到字符串值。flex3函數不返回字符串

下面是代碼:

我檢索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; 
} 

警報打印出了名的,但當我嘗試在我的下一個方法使用的值(它調用它調用getNameResults Web服務),我得到的對象標記

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

但是這裏返回的值是[object AsyncToken]

有什麼想法?

回答

2

您正在將getRoomZoneInfo()的結果設置爲變量網站,但您將其轉換爲字符串。 getRoomZoneInfo正在返回一個對象,並且因爲您將它粘入的變量是一個字符串,就像在對象上調用.toString()一樣,這會生成[對象AsyncToken]。

基本上,如果getRoomZoneInfo是一個web服務調用,你不能得到你在這裏尋找的信息,你必須等到結果返回並得到你正在尋找的字符串。合理?

1

您的getInfo()方法未調用getNameResults()。它調用getRoomZoneInfo()。我不知道該方法做了什麼,但我猜測它是返回一個Object,而不是String。

0

我m到處[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; 
}