我在将数组变量从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。仍然不确定这是否是问题
答案 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]"]