flex3関数が文字列を適切に返さない
-
19-08-2019 - |
質問
スクリプトタグ内のメソッドから文字列値を返そうとしていますが、常にオブジェクトを返すため、文字列値を取得できません。
コードは次のとおりです:
i 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]です
アイデアはありますか
解決
getRoomZoneInfo()
の結果を可変サイトに設定していますが、文字列としてキャストしています。 getRoomZoneInfo
はオブジェクトを返します。オブジェクトを固定している変数は文字列であるため、オブジェクトに対して.toString()
を呼び出したようになり、[object AsyncToken
]が生成されます。
基本的に<=>がWebサービスの呼び出しである場合、ここで探している情報を取得することはできません。結果が返されて、探している文字列を取得するまで待つ必要があります。理にかなっていますか
他のヒント
getInfo()メソッドはgetNameResults()を呼び出していません。 getRoomZoneInfo()を呼び出しています。そのメソッドが何をするのかはわかりませんが、文字列ではなくオブジェクトを返すと推測しています。
データベースからデータを取得しているため、文字列ではなく変数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;
}
所属していません StackOverflow