如何在AS3中读取POST数据?

时间:2015-04-13 04:20:19

标签: actionscript-3 flex flex4

我正在创建以下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);

2 个答案:

答案 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将它们传递给目标应用吗?

我或多或少有类似的问题,并使用了这种方法。

  1. 在我的第一支瑞士法郎:

    var urlReq:URLRequest = new URLRequest(String("game.html?user_id="+userId+"&user_code="+userCode));
    
  2. 然后在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>
    
  3. 最后在我的目标swf中我收到了这样的话:

    var userId:String = loaderInfo.parameters.user_id as String;
    var userCode:String = loaderInfo.parameters.user_code as String;
    
  4. 我希望这有帮助,如果没有,那么我可能不理解主要问题。