台灣最大程式設計社群網站
線上人數
3242
 
會員總數:246323
討論主題:189853
歡迎您免費加入會員
討論區列表 >> CSS/HTML5/Bootstarp >> FLASH如何接收與使用Webserver傳過來的dataset?
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
FLASH如何接收與使用Webserver傳過來的dataset?
價值 : 30 QP  點閱數:3997 回應數:18
樓主

Athena
門外漢
0 85
1100 251
發送站內信

捐贈 VP 給 Athena
各位高手您好:
小女子初碰flash 寫了一個.NET的webservice,讓flash呼叫傳值過去後會丟回一個dataset給flash接收
但小女子試了好久,不知道如何讓flash接到並揭示取到的dataset內的值
請問各位大大flash是否可以直接 接收WEBSERVER丟過來的DATASET
若不行,是否有其他好的IDEA可以接收其他格式的TABLE格式呢?
懇請各位高手指教~謝謝!!!

搜尋相關Tags的文章: [ FLASH ] , [ ACTIONSCRIPT ] , [ WebServices ] , [ Dataset ] ,
本篇文章發表於2007-07-06 10:21
1樓
回應

白果喵
捐贈 VP 給 白果喵 檢舉此回應
flash可從動態網頁主動接收

1.純文字
2.多媒體(只限flash內部支援的格式)
3.socket(好像只能接收文字?)

首先要知道你所說的TABLE格式在純文字來看是什麼樣子...
因為flash的AS沒什麼分析功能=.=
本篇文章回覆於2007-07-06 10:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

Super-Tomato
檢舉此回應
在你的.Net伺服器把dataset以XML格式回傳Flash
本篇文章回覆於2007-07-06 10:46
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
作者回應

Athena
捐贈 VP 給 Athena 檢舉此回應
白果喵大大您好:
我的table是純文字的 大致長的如下:
<?xml version="1.0" encoding="utf-8" ?>
- <DataSet xmlns="http://tempuri.org/">
- <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
- <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
- <xs:complexType>
- <xs:choice minOccurs="0" maxOccurs="unbounded">
- <xs:element name="Table">
- <xs:complexType>
- <xs:sequence>
<xs:element name="STATUS" type="xs:int" minOccurs="0" />
<xs:element name="GIFT" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
- <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
- <NewDataSet xmlns="">
- <Table diffgr:id="Table1" msdata:rowOrder="0">
<STATUS>1</STATUS>
<GIFT>CASH 點數400</GIFT>
</Table>
</NewDataSet>
</diffgr:diffgram>
</DataSet>
是一個dataset的格式回傳給flash
不知道flash可以接嗎?
附上我寫的flash code:
import mx.services.*;
var my_ds:mx.data.components.DataSet;
//設定wsdl服務地方
var wsdlURI = "http://localhost/WS960622/WebService0621.asmx?WSDL";
ws = new WebService(wsdlURI);
callback = ws.giftDS(id);
//服務成功傳回訊息
callback.onResult = function(result) {
my_ds = result;
var dsleng:Number
dsleng=my_ds.getLength();
resultTT.text = dsleng; //動態文字顯示資料值
};
以上方式若不是傳回dataset,例如單一運算值回傳、字串回傳這種的flash就可以接收並揭示
但是dataset的結果卻是"undefined"
不知事否有其他解法方式,謝謝您的指導!
本篇文章回覆於2007-07-06 10:53
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

白果喵
捐贈 VP 給 白果喵 檢舉此回應
DataSet沒用過...
但你確定用
var my_ds:mx.data.components.DataSet = result;
的方式是正確...

既然不放進dataset之前資料仍是無誤的話...
那就顯出result放進dataset(my_ds)之間出了問題...
請檢查使用dataset方面的使用知識是否有遺漏...
本篇文章回覆於2007-07-06 11:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

Super-Tomato
檢舉此回應
你的dataset資料結構根本都是錯誤的啊, 從你的WebService就已經無法取得資料了
至於dataset結構該是怎樣可以參考 http://www.w3.org/TR/wsdl




本篇文章回覆於2007-07-06 17:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

Athena
捐贈 VP 給 Athena 檢舉此回應
TO Super-Tomato 大大:
那個WebService我另開了.net專案寫程式呼叫出來是有dataset與資料值的
在flash內trace 是出現" Result : [Object Object] "這樣的結果
這樣我的flash有抓到dataset內的資料了嗎?
還是無法解析這個傳回來的dataset?
本篇文章回覆於2007-07-06 18:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

Super-Tomato
檢舉此回應
如果你是得到result的話, 當然恭喜你是成功了, 接下來就是看看你的dataset資料, 如回傳的是
<xsd element name="GIFT" type="xsd:string" />

那麼你就用 result.GIFT 取得妳要的資料即可
本篇文章回覆於2007-07-07 01:03
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

Athena
捐贈 VP 給 Athena 檢舉此回應
DEAR Super-Tomato 大大
callback.onResult = function(result) {
trace("Result : "+result);//有資料有顯示 Result : [Object Object]
trace("Result<STATUS> : "+result.STATUS);
};
卻顯示Result<STATUS> : undefined
>"< 還是取不到資料吶~
本篇文章回覆於2007-07-09 12:40
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

Super-Tomato
檢舉此回應
~_~"

callback.onResult = function(result) {
for(var i in result) {
trace("result."+i+" = "+result[i]);
}
};

這段會把你所有result的屬性都列出來
本篇文章回覆於2007-07-09 18:54
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
作者回應

Athena
捐贈 VP 給 Athena 檢舉此回應
to Super-Tomato 大大
用了那個trace顯示出如下結果 看來好像並沒有解析到我傳過去的dataset耶~ >"<
result.diffgram = <diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"><NewDataSet xmlns=""><Table diffgr:id="Table1" msdata:rowOrder="0"><STATUS>1</STATUS><GIFT>CASH 點數200</GIFT></Table></NewDataSet></diffgr:diffgram>
result.schema = <xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"><xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true"><xs:complexType><xs:choice minOccurs="0" maxOccurs="unbounded"><xs:element name="Table"><xs:complexType><xs:sequence><xs:element name="STATUS" type="xs:int" minOccurs="0" /><xs:element name="GIFT" type="xs:string" minOccurs="0" /></xs:sequence></xs:complexType></xs:element></xs:choice></xs:complexType></xs:element></xs:schema>
本篇文章回覆於2007-07-10 14:50
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
回應

Sobek
檢舉此回應
大大的意思是說
會把全部的接收到內容 show出來
妳再各別取自己要的值 @w@
我想是這意思XD
本篇文章回覆於2007-07-10 18:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

Super-Tomato
檢舉此回應
..............

你的dataset structure根本沒跟著 "WSDL" 的規格形式啊,
這樣你不如把資料轉成XML來接收方便的多
本篇文章回覆於2007-07-10 18:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

Athena
捐贈 VP 給 Athena 檢舉此回應
dear super-Tomato大人~
我已經照您的指示把這個不合格的dataset改成xml回傳出來了 如下所示,請問這樣的格式符合嗎?^^
<?xml version="1.0" encoding="utf-8" ?>
<string xmlns="http://tempuri.org/"><NewDataSet> <Table> <GASHID>23423</GASHID> <GASHPWD>423423</GASHPWD> </Table> <Table> <GASHID>asdfasd</GASHID> <GASHPWD>23423</GASHPWD> </Table> <Table> <GASHID>asdfaxcv</GASHID> <GASHPWD>asdfasdfas</GASHPWD> </Table> <Table> <GASHID>athena</GASHID> <GASHPWD>111</GASHPWD> </Table> <Table> <GASHID>test</GASHID> <GASHPWD>abc</GASHPWD> </Table> <Table> <GASHID>xcv</GASHID> <GASHPWD>4234</GASHPWD> </Table> </NewDataSet></string>
本篇文章回覆於2007-07-11 17:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
最有價值解答

Super-Tomato
檢舉此回應
XML資料結構只要把<string>去掉就可以了, 接下來你就可以用XML class讀取 newdataset 內的childNodes 取得資料了

註明 : result.diffgram 如果是字串, 必須先轉換為XML才可取childNodes





我大概給你看看wsdl的形式

WSDL 的4大標籤, types, message, porttype, binding

porttype扮演wsdl最重要角色, 主要是用來操作各message
message用來定義資料方式
types定義wsdl類型
binding定義端口設定和訊息格式


詳細的你就到w3c去看吧, 今天太累沒什麼精神說明, 你最主要用的就是message結構如何定義, 以下是個由porttype執行向webservice要求資料, 而通過getdataresponse返回資料, 所以message的型態和結構的定義必須是正確的.

<message name="getDATARequest">
<part name="DATA" type="xs:string"/>
</message>

<message name="getDATAResponse">
<part name="GASHID" type="xs:string" />
</message>

<portType name="glossaryDATA">
<operation name="getDATA">
<input message="getDATARequest"/>
<output message="getDATAResponse"/>
</operation>
</portType>
本篇文章回覆於2007-07-12 18:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
作者回應

Athena
捐贈 VP 給 Athena 檢舉此回應
謝謝Super-Tomato 大大的詳細解說
原來是我傳回來的dataset格式有不符合
我會依您的解說再好好試看看的
非常的謝謝您~^^
本篇文章回覆於2007-07-13 11:07
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.