- ベストアンサー
FlashとASP間の変数の受け渡し方法
- FlashからASPへの変数送信方法、ASPでの変数受け取り方法、ASPからFlashへの値送信方法、Flashで値受け取り方法について説明します。
- FlashとASP間での変数の受け渡し方法について詳しく説明します。FlashからASPへ変数を送信する方法、ASP側で受け取る方法、ASPからFlashへ送信する方法、Flashで値を受け取る方法を順を追って解説します。
- FlashとASP間での変数の受け渡し方法について詳しく解説します。FlashからASPへ変数の値を送信する方法、ASPで受け取る方法、ASPからFlashへ値を送信する方法、Flashで値を受け取る方法について順を追って説明します。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
この場合の構成としては、 1.Flashを貼るページ 2.Webサーバーへのアクセスを提供するUIの無いページ(aspx) の最低2つが必要です。2は、ページが表示されている必要は無い はずなのですが、、表示されていないと、何かうまくいかなかった でしょうか? 複数の値を送信する方法なのですが、XMLを送受信しているので、 そのXMLに載せてあげれば良いだけです。 やり方は人それぞれだと思いますが、私は下記のようなXMLを送受 信していました。 <XMLRoot> <Value1>aaa</Value1> <Value2>aaa</Value2> <Value3>aaa</Value3> </XMLRoot> ご検討を祈ります。分からなければまた聞いてください。
その他の回答 (4)
- gantetsu
- ベストアンサー率100% (1/1)
ちょっと誤解があるようなので処理の流れを整理します。 1)Flash側で、xml.sendAndLoadでXMLデータ送信 2)ASP側で、呼び出し先のaspxのPage_Loadが動く 3)ASP側で、Page_Load内でResponse.WriteでXMLを書き出す 4)FLash側で、非同期用の通知メソッド(xml.onLoadに設 定した関数)が呼び出される。 こういう流れになるはずですが、ここまではOKでしょう か? sendAndLoadでググるとMacromediaのサイトがHitします。 そこを参考にするのも良いと思います。
お礼
自己解決いたしました。お騒がせしました。 Flashのスクリプトでgeturlを呼び出し、セットされた変数を送信し、ブラウザで対象のページを表示させました。 on (release) { var tes = 10; xml.sendAndLoad("http://~", tes, "POST"); getURL("http://~", tes, "POST"); name_txt.text = "送信完了"; } ここでまた質問ですが、複数の値を送信するにはどういう方法を使えば良いでしょうか。 私が作ろうとしているアプリケーションは3つの値を送信する必要があります。 たびたびすみません。よろしくお願いします。
補足
返信が遅れまして申し訳ありません。 一通りの流れは理解することが出来ました。 とても初歩的な質問かもしれませんが、FlashでXMLデータ送信をしてもブラウザで対象のASPのページを表示していないと値を受け取ることが出来ないのでしょうか。 FlashをASPのページに貼り付けるとページが表示された時点でPage_Loadが呼び出されてしまい、処理が出来ませんでした。Flashを貼り付けるためのページがもう一つ必要なのでしょうか。 Flashはどこに貼り付けるなどのページの構成を教えていただけないでしょうか。 よろしくお願いします。
- gantetsu
- ベストアンサー率100% (1/1)
QueryStringが入っていないのですね。 Request.Form(0)の方には何か入っていないでしょうか? あと、コメントがサンプルコードと違っていました。 すみません。 ×Request.QueryString(0)が無かったら ○Request.Form.Countが1以上だったら です。
お礼
自己解決しました。 複数の値を送信する方法ですが、ActionScriptで配列を作成し送信しました。 それをそのままASPで受け取って表示させると「値,値,・・・」のようにカンマで区切られた状態で表示されました。 それをVBの文字列操作関数のSplitで「,」で区切ることにより取り出せました。 長い期間たくさんのアドバイスを頂きまして、ありがとうございました。 非常に助かりました。
補足
ありがとうございます。 エラーは消えました。 どうやらコードをPageLoadに書いていたので、値が入る前に変数にアクセスしてしまったために出たエラーだったようです。 Button_Clickイベントに写したところエラーがなくなりました。 Flashで整数の10を送信して、Buttonをクリックして入っている値を表示させて見ましたが、 /wEPDwULLTEwNTUwMzcxMDZkZF5CtVkx67RanrwO8bshh3jlFqYJ このような表示になっていました。 ActionScriptのほうは on (release) { var tes =10; xml.sendAndLoad("Default.aspx",tes, "POST"); name_txt.text="送信完了" } このようになっています。 ActionScriptのほうが不適切なのでしょうか?
- gantetsu
- ベストアンサー率100% (1/1)
No1です。 そうですね。ここには載っていませんでしたね。 試行錯誤の上、実際には下記のようにしました(VB.NET)。 XML文字列を受け取ったら、後はXMLDocumentに読み込んで好きに処理できます。 Dim request_xml_str As String If Request.Form.Count = 0 Then request_xml_str = Request.QueryString(0) Else request_xml_str = Request.Form(0) End If 調べてみると、sendAndLoadはFlashの開発環境ではクエリパラメタ でXMLを渡そうとするのに対し、実際にHTMLに貼り付けて使う場合 にはForm変数として渡そうとする模様でした。 私はデバッグのやりやすさを考えて、Request.QueryString(0)が無 かったらRequest.Form(0)の値を使用するようにしました。ちなみ に名前は無しで送られてくるので、インデックスでアクセスするし かないようです。
補足
回答ありがとうございます。 PageLoadイベントに頂いたコードを記述したところ、エラーが出てしまいました。 request_xml_str = Request.QueryString(0) この行にインデックスが範囲を超えていますというエラーです。 0なのに範囲外というのはどういうことなのでしょうか・・・
- gantetsu
- ベストアンサー率100% (1/1)
はじめまして。 Flashはまだ、なかなか情報が無くて苦労しますよね。 以前、同じような事をASP.NETで試みた事があります。 FlashとWebサーバとのやりとりは、XML.sendAndLoadを使用して、XMLでやりとりするのが最も応用がきいて良いです。 参考URLを見てください。
補足
回答ありがとうございます。 早速参考のURLを拝見させていただきました。 この情報を元に試してみたところ、ASPからFlashへ変数を渡すことに成功しました。 しかし、FlashからASPに値を渡すことができませんでした。 この場合はどのような方法を使えばいいのでしょうか? 重ねて回答よろしくお願いします。
お礼
回答ありがとうございます。 二つのページが必要なのですね。早速試してみました。 先ほど記しましたが、無事に値を受け取り表示することが出来ました。 複数の値の受信方法ですが、これをQueryStringで受け取ったようにVBの変数に代入する方法はありますか? xml.sendAndLoad("http://~", tes, "POST"); getURL("http://~", tes, "POST"); このようにXML.SendAndLoadの後にブラウザでページを開くためにgeturlでPOSTしているので、そちらで値を送信してしまっているのかもしれません。このような記述で問題はありませんか? よろしくお願いします。