ホーム > FLASH > ActionScript クラス > LoadVars > sendAndLoad (LoadVars.sendAndLoad メソッド)

ActionScript クラス > LoadVars > sendAndLoad (LoadVars.sendAndLoad メソッド)

↓成功!

1.FLASHからXMLURLをPHPに投げたつつ、返りをonLoadイベントハンドラで待機。
2.PHPは渡されたXMLURLからXMLを取得、パースし、シリアライズして返す
3.返ってきたデータをアンシリアライズして配列に格納、表示

↓心配な点
Flash Player 7 以降で実行されている SWF ファイルでは、url がまったく同じドメインに存在している必要があります。たとえば、www.someDomain.com にある SWF ファイルは、www.someDomain.com にあるソースからのみデータをロードできます。

ローカル→外部ドメインはいけるけど、外部ドメインのデータをロードできないのかも。要検証。

その点を除けば、
1.FLASHから個別IDをPHPへ
2.IDを元にXMLを特定(URLに問い合わせるか、キャッシュがあればキャッシュを採用)&パース、シリアライズしてFLASHへ返す
が、実現できそう。

>もしクロスドメイン問題が発生した場合は、Iframe配信ならOKか?


ActionScript 2.0 リファレンスガイド

ActionScript クラス > LoadVars > sendAndLoad (LoadVars.sendAndLoad メソッド)

sendAndLoad (LoadVars.sendAndLoad メソッド)
public sendAndLoad(url:String, target:Object, [method:String]) : Boolean

my_lv オブジェクト内の変数を、指定された URL に送信 (Post) します。サーバーの応答がダウンロードされ、変数データとして解析され、結果の変数が target オブジェクトに挿入されます。

変数の送信方法は、LoadVars.send() の場合と同じです。変数を target にダウンロードする方法は LoadVars.load() と同じです。

このメソッドを使用するときは、Flash Player セキュリティモデルを考慮してください。

Flash Player 8 :

呼び出し元 SWF ファイルがローカルファイルシステムのサンドボックスにあり、ターゲットリソースがネットワーク上のサンドボックスにある場合、データをロードできません。
呼び出し元 SWF ファイルがネットワーク上のサンドボックスにあり、ターゲットリソースがローカルにある場合、データをロードできません。
詳細については、以下を参照してください。

『ActionScript 2.0 の学習』の第 17 章「セキュリティについて」
Flash Player 8 セキュリティに関するホワイトペーパー
Flash Player 8 セキュリティ関連 API に関するホワイトペーパー
Flash Player 7 以降 :

Web サイトでクロスドメインポリシーファイルを使用して、リソースへのクロスドメインアクセスを許可できます。
Flash Player 7 以降で実行されている SWF ファイルでは、url がまったく同じドメインに存在している必要があります。たとえば、www.someDomain.com にある SWF ファイルは、www.someDomain.com にあるソースからのみデータをロードできます。
Flash Player 7 より前のバージョンの Player で SWF ファイルを実行している場合、url は、呼び出し元の SWF ファイルと同じスーパードメインに属している必要があります。スーパードメインは、ファイルの URL の一番左の要素を削除することによって得られます。たとえば、www.someDomain.com に存在する SWF ファイルは、store.someDomain.com に存在するソースからデータをロードできます。これは、どちらのファイルも同じスーパードメイン someDomain.com に属しているためです。

このメソッドは XML.sendAndLoad() と似ています。

使用できるバージョン : ActionScript 1.0、Flash Player 6

パラメータ
url:String – ストリング。変数のアップロード先の URL。呼び出し元の SWF ファイルが Web ブラウザで実行されている場合、url は SWF ファイルと同じドメインに属している必要があります。

target:Object – ダウンロードされる変数を受け取る LoadVars オブジェクトまたは XML オブジェクト。

method:String (オプション) – ストリング。HTTP プロトコルの GET メソッドまたは POST メソッド。デフォルト値は POST です。

戻り値
Boolean – ブール値。


次の例では、TextInput インスタンス name_ti、TextArea インスタンス result_ta、Button インスタンス submit_button をステージに追加します。ユーザーがこの例の Login ボタンインスタンスをクリックすると、send_lv および result_lv の 2 つの LoadVars オブジェクトが作成されます。send_lv オブジェクトは、name_ti インスタンスから名前をコピーし、そのデータを greeting.cfm に送信します。このスクリプトの実行結果を result_lv オブジェクトにロードし、サーバーの応答を TextArea インスタンス (result_ta) に表示します。この例を確認するには、タイムラインのフレーム 1 に次の ActionScript を追加します。

var submitListener:Object = new Object();
submitListener.click = function(evt:Object) {
var result_lv:LoadVars = new LoadVars();
result_lv.onLoad = function(success:Boolean) {
if (success) {
result_ta.text = result_lv.welcomeMessage;
} else {
result_ta.text = “Error connecting to server.”;
}
};
var send_lv:LoadVars = new LoadVars();
send_lv.name = name_ti.text;
send_lv.sendAndLoad(“http://www.flash-mx.com/mm/greeting.cfm”, result_lv, “POST”);
};
submit_button.addEventListener(“click”, submitListener);

より堅牢な例については、ActionScript のサンプルフォルダにある login.fla file を参照してください。通常、このフォルダのパスは、次のとおりです。

Windows : \Program Files\Macromedia\Flash 8\Samples and Tutorials\Samples\ActionScript
Macintosh : /アプリケーション/Macromedia Flash 8/Samples and Tutorials/Samples/ActionScript

カテゴリー: FLASH タグ:
  1. コメントはまだありません。