将数组从Flash传递给PHP

时间:2011-05-20 07:14:09

标签: php flash actionscript actionscript-2

我在将数组变量从Flash(AS2)传递给PHP时遇到问题。在动作脚本中,我有几个像这样定义的数组

output["px1"]
output["px2"]
output["px3"]

然后我使用以下代码将变量传递到php文件

output.sendAndLoad("orders/print2cart.php",output,"POST");

我想知道如何从PHP中获取数组中的数据。我尝试过使用$_POST['px1']$_POST['output']['px1']$_POST['output'],但似乎无法获取任何数据。关于我可以改变什么以获得理想结果的任何想法?

谢谢!

编辑:刚注意到我输出中的其他变量之一(output.username)也没有被发送到PHP,尽管它出现在flash中。使用以下代码警告闪存,它确实显示所有变量。 getURL(“javascript:alert('Print Stamp:”+ output.PrintStamp +“User:”+ output.username“')”);

编辑:似乎一旦我发送了一个很长的数组(或者一个字符串),就不会发送与LoadVars变量相关的其他字段。我用谷歌搜索了限制,它说文本限制是~63000。仍然不确定这是否是问题

3 个答案:

答案 0 :(得分:3)

尝试将其作为字符串。

在flash中使用Array.join();并发送由此返回的值,然后在PHP中使用explode()将其转换回数组。

var dataOut:LoadVars = new LoadVars();
var dataIn:LoadVars = new LoadVars();

dataOut.info = your_array.join("#");

vars.sendAndLoad("url", dataIn, "post");

dataIn.onLoad = function(go:Boolean):Void
{
    if(go)
    {
        trace('success');
    }
    else trace('connection failed');
}

PHP:

<?php
    $str = $_POST["info"];
    $myarray = explode($str);
?>

答案 1 :(得分:1)

由于没有其他选择,我在经历了很多事情之后才最终得出结论:大尺寸的数组不能很容易地从AS2传递到PHP。我的数组实际上是一个转换为像素的图像,所以我做的是将数组分成2个部分并将其发布到PHP文件两次而不是仅发布一次。另一种方法是首先将数组拆分并发布到文本文件中,然后直接从PHP读取该文本文件。

答案 2 :(得分:1)

通过命名参数“array [0]”,“array [1]”等,你可以像对待HTML一样做:

    var urlVariable:URLVariables = new URLVariables();
    urlVariable["phpArray[0]"] = "arrayEntry0";
    urlVariable["phpArray[1]"] = "arrayEntry1";

    var loader:URLLoader = new URLLoader();
    var request:URLRequest = new URLRequest("http://yourserver.com/phpScript.php");
    request.method = URLRequestMethod.POST;
    request.data = urlVariable;

    loader.load(request);

然后在服务器端,您可以验证php脚本收到的结果:

    print_r($_POST);

它应输出:

    Array
    (
        [phpArray] => Array
            (
                [0] => arrayEntry0
                [1] => arrayEntry1
            )
    )

对于多维数组,您可以使用:

    urlVariable["phpArray[0][0]"]