2012-02-08 14 views
2

HTMLフォームから、パラメータE.G、ログインの詳細を渡す既存の動作中のフレックスアプリケーションを起動します。外部mxmlのhtmlリクエストパラメータにアクセスする方法

私は、フラッシュが全くない単純なHTMLページを持っていると言います。

<h1>Test sending parameters</h1> 
    <form name="login" action="http://example.com/myflexApp/index.html" 
          target="_new" method="POST"> 
    username: <input type="text" name="username" /> 
    password: <input type="text" name="password" /> 
    <input type="submit" value="Submit" /> 
</form> 

これは、新しいブラウザウィンドウに初めて自分のアプリケーションを開きます

のindex.htmlを作成するためにコンパイルされ

マイindex.mxmlはこのようになります (簡体字):

<?xml version="1.0" encoding="utf-8"?> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      ... 
      creationComplete="init(event)" xmlns:omp="omp.*"> 
    <fx:Style source="defaults.css"/> 
    <fx:Script> 
    <![CDATA[ 
     import ... 

     protected function init(event:FlexEvent):void 
     { 
      if (params[username] && params[password])//psuedo code 
      { 
      Alert.show(params[username],params[password]);//debugging 
      //login(params[username],params[password]);//psuedo code to log in automatically 
      }else{ 
      //existing code to show login form which works 
      } 
     } 
    ]]> 
    </fx:Script> 
    <mx:ViewStack id="vs" width="100%" height="100%" ...> 
    </mx:ViewStack> 
</s:Application> 

それでは、HTMLコードはどのように見えるのでしょうか、init()関数に入る対応するactionscriptコードは何でしょうか?

少なくとも、私はグーグルで何をすべきですか?

注:明らかに、パラメータと値をブラウザのURLアドレスに表示することはできません。さもなければ、これは簡単でしょう。

また、アプリケーションは元のHTMLページに埋め込まれていませんが、このトピックで見つかった検索結果の99.9%は、それがあった場合の例を示しています。

理想的には元のリクエストはPOSTリクエストですが、明らかにflexはポストリクエストを処理できません。

(それはHTML内に埋め込まれたSWFに送信していない場合は、HTML形式の完全に確認されていないが - など私が言った、それがあった場合の例の100さんを見つけました)、私は無駄にFlashVarsのを試してみた

HTML:

<param name="flashvars" value="test='default text'" /> 

MXML:

if (FlexGlobals.topLevelApplication.parameters.hasOwnProperty("username")) 
{ 
Alert.show(FlexGlobals.topLevelApplication.parameters.username); 
} 

//Alert.show(LoaderInfo(this.root.loaderInfo).parameters.username);//also fails 

だから、他のほとんどの言語で、単純な私はしかし、FLEXと運を持っていないと働いてきました。私は明らかに何か基本的なものを欠いている。これをグーグルで

答えて

1

iは、次の例が見つかりました:あります
http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf626ae-7feb.html

をすべて合格 `flashVars``

<?xml version="1.0" encoding="utf-8"?> 
<!-- wrapper/FlashVarTest.mxml --> 
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:mx="library://ns.adobe.com/flex/mx" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    creationComplete="init()"> 

    <s:layout> 
     <s:HorizontalLayout/> 
    </s:layout> 

    <fx:Script><![CDATA[ 
     import mx.core.FlexGlobals; 

     private function init():void { 
       for (var i:String in FlexGlobals.topLevelApplication.parameters) { 
       ta1.text += i + ":" + FlexGlobals.topLevelApplication.parameters[i] + "\n"; 
       } 
      } 
     ]]></fx:Script> 

     <s:Label text="flashVars"/> 
     <s:RichText id="ta1" width="300" height="200"/> 

</s:Application> 

は多分最初にこれを試してみて、あなたは何を見ることができますトレースするコードスニペットですあなたがあなたのフレックスアプリに渡すパラメータ。

あなたのHTMLは次のようになります。

<html> 
<head> 
<title>code/wrapper/SimplestFlashVarTestWrapper.html</title> 
<style> 
    body { 
     margin: 0px; 
     overflow:hidden 
    } 
</style> 
</head> 
<body scroll='no'> 
<table width='100%' height='100%' cellspacing='0' cellpadding='0'><tr><td valign='top'> 

<h1>Simplest FlashVarTest Wrapper</h1> 

    <object id='mySwf' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' height='100%' width='100%'> 
     <param name='src' value='FlashVarTest.swf'/> 
     <param name='flashVars' value='username=Nick&password=Danger'/> 
     <embed name='mySwf' src='FlashVarTest.swf' height='100%' width='100%' flashVars='username=Nick&password=Danger'/> 
    </object> 

</td></tr></table> 
</body> 
</html> 

あなただけではなく1回、2回のFlashVarsを追加する必要があります。あなたの例で追加した'<space>のようなフラッシュバーがあるかどうかは分かりません。

もう1つのこと:ユーザーのパスワードをプレーンテキストとしてPOSTしたくないです - それをエンコードするために何かのmd5-hashを使用してください。

+0

ありがとうございました。私は成功していないこの例を試みました。 ta1要素の内容は常に 'i:13287332432'です。'i:'の後に数字の束が続きます( 'i:'はちょうど偶然のことで、ta1.text + = j + "+> FlexGlobal ...に変更すると" i:123123 ') – user1196263

+0

また、私はまだ私は正しいhtmlを持っているとは思わない。オブジェクトタグとその内容はhtml入力フォームとどのように関連していますか?オブジェクトタグを完全に削除すると、送信ボタンでアプリを起動すると 'i:123234213'が表示されます。ありがとう – user1196263

+0

私はあなたが2つのhtmlファイルを持っていると思った:1.フォームとして、2. SWFを埋め込む。右?!後者では、POSTデータをFORMから取得してSWFオブジェクトに渡す必要があります。なぜあなたはHTMLでフォームを作成しようとしていますが、これをあなたのフラッシュアプ​​リケーションには含まないのですか? html-> flashからparamsを渡す必要はありません。 – pkyeck

関連する問題