4

我似乎无法接受可变数据,在查阅 Adob​​e AS3 参考资料时,我似乎做的一切都是正确的,我相信这是 PHP 的问题,但不确定。

PHP - 此文件与 AS3 文档位于同一目录中

<?php

$testData = 4;

echo "testData=" . $testData

?>

AS3

public function URLLoaderDataFormatExample()
{
    var request:URLRequest = new URLRequest("PHPTest.php");
    var variables:URLLoader = new URLLoader();
    variables.dataFormat = URLLoaderDataFormat.VARIABLES;
    variables.addEventListener(Event.COMPLETE, completeHandler);
    try
    {
        variables.load(request);
    } 
    catch (error:Error)
    {
        trace("Unable to load URL: " + error);
    }
}
private function completeHandler(event:Event):void
{
    var loader:URLLoader = URLLoader(event.target);
    trace(event.target.data.testData)
}

跟踪语句应该打印 4。但是,它只是打印未定义。

4

3 回答 3

1

Actionscript 代码看起来没问题。

Flash 对变量之前/之后的空格非常敏感。请注意,如果您在 之后?>或 之前有换行符<?php,它将作为响应的一部分给出。

为确保 PHP 是问题所在,请将 .php 文件替换为简单的 .txt 文件,仅使用 text testData=4,没有额外的换行符或空格,然后尝试加载它。

如果加载正确,则问题出在 PHP 文件上 -PHPTest.php在浏览器中导航到并检查是否额外插入了某些内容。

于 2012-10-11T20:57:46.347 回答
1

如果我没记错的话,我也已经不得不自己面对这个问题了。

我发现有时(没有找到实际原因)PHP 发送的第一个值会被无效甚至根本不发送。

我已经习惯在回声的开头添加一个不重要的值,例如:

echo 'unimportantvar=nothing&myXML='.$xml;

似乎总能解决这个问题。

于 2012-10-11T18:45:25.090 回答
1

像这样的事情应该这样做。

private function completeHandler(event:Event):void{
    var loader:URLLoader = URLLoader(event.target);
    var urlVars:URLVariables = new URLVariables(loader.data);
    trace(urlVars.testData)
}
于 2012-10-11T20:46:33.327 回答