我正在创建以下url请求,该请求通过提到的url启动flex应用程序。我还添加了数据并将url req方法设置为POST。如何在我正在启动的Flex应用程序中读取此POST数据
var urlReq:URLRequest = new URLRequest();
var requestVars:URLVariables = new URLVariables();
requestVars.id = 'abc';
urlReq.data = requestVars;
urlReq.method = URLRequestMethod.POST;
urlReq.url = '../../bin-debug/FlexApp.html';
navigateToURL(urlReq);
答案 0 :(得分:0)
POST数据被发送到服务器,因此如果您想从客户端在FlexApp.html
上读取它,那么服务器需要以某种方式在该页面上回显它。否则,您可以使用GET请求并使用JavaScript window.location.search
访问请求参数。
这是一个使用PHP将POST变量作为JSON输出到页面的示例:
<script>
var post_params = <? echo json_encode($_POST); ?>
function getPostParam(name){
return post_params[name];
}
</script>
从JavaScript调用:
alert(getPostParam("id"));
从ActionScript调用:
trace(ExternalInterface.call("getPostParam", "id"));
答案 1 :(得分:0)
您可以在网址中传递变量,然后通过swfobject使用flashvars将它们传递给目标应用吗?
我或多或少有类似的问题,并使用了这种方法。
在我的第一支瑞士法郎:
var urlReq:URLRequest = new URLRequest(String("game.html?user_id="+userId+"&user_code="+userCode));
然后在game.html中我解析了这些变量,然后发送为flashvars:
<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
function getUrlVars() {
var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
function(m,key,value) {
vars[key] = value;
});
return vars;
};
var flashvars = {
user_id: getUrlVars()["user_id"],
user_code: getUrlVars()["user_code"]
};
var params = {
quality: "high",
bgcolor: "#000000",
play: "true",
loop: "true",
wmode: "window",
scale: "showall",
menu: "true",
devicefont: "false",
allowScriptAccess: "true"
};
swfobject.embedSWF("preloader.swf", "flashContent", "980", "663", "11.2.0",false, flashvars, params);
</script>
最后在我的目标swf中我收到了这样的话:
var userId:String = loaderInfo.parameters.user_id as String;
var userCode:String = loaderInfo.parameters.user_code as String;
我希望这有帮助,如果没有,那么我可能不理解主要问题。