gpt4 book ai didi

html - 如何访问外部mxml中的html请求参数

转载 作者:行者123 更新时间:2023-11-28 02:09:31 25 4
gpt4 key购买 nike

我希望从 HTML 表单启动我现有的工作 flex 应用程序,传递参数例如登录详细信息。

假设我有一个简单的 HTML 页面,其中根本没有 FLASH。

<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 地址中显示参数和值是 Not Acceptable 。否则这会很容易。

另请注意,该应用程序并未嵌入到原始 HTML 页面中,尽管我在该主题上找到的 99.9% 的搜索结果都提供了如果嵌入则如何操作的示例。

理想情况下,原始请求是 POST 请求,但显然 flex 无法处理 post 请求。

我已经尝试过 flashvars 无济于事(尽管如果它没有发送到 HTML 中的嵌入式 SWF 则不能完全确定 HTML 格式 - 就像我说的那样,找到了 100 个示例)

HTML:

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

XML:

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

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

在我使用过的大多数其他语言中都非常简单,但在 FLEX 中却运气不佳。我显然缺少一些基本的东西。

最佳答案

谷歌搜索我发现了以下示例:
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>

也许先试试这个,然后你会看到你传递给你的 flex-app 的参数是什么。

您的 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>

您必须添加 flashvars 两次,而不仅仅是一次。我真的不知道 flashvars 是否喜欢 '<space>您在示例中添加了。

另一件事:您不想将用户密码作为明文发布 - 使用某种 md5-hash 对其进行编码。

关于html - 如何访问外部mxml中的html请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9188150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com