PHP 无法从 ActionScript3 接收参数
Posted
技术标签:
【中文标题】PHP 无法从 ActionScript3 接收参数【英文标题】:PHP can't receive a param from ActionScript3 【发布时间】:2014-12-05 09:12:19 【问题描述】:我已经建立了一个网站并与 actionscript 进行通信。在actionscript中,我正在构建一个函数来调用php函数并发布一个用于从mysql数据库加载数据的变量。问题是当我调用actionscript函数并将变量发布到php时。php端我调用$_POST ['action'];用于从 actionscript 端接收变量,但是当我想查看此帖子时 $_POST['action'];像这样的错误
Notice: Undefined index: action in C:\wamp\www\MPA-EM\bin\model.php on line 3
这是一个调用php的动作脚本函数:
public function SelectData(TBN:String,TYPE:String):void
var myrequest:URLRequest = new URLRequest("http://localhost/MPA-EM/bin/model.php");
myrequest.method = URLRequestMethod.POST;
var variables:URLVariables = new URLVariables();
variables.tablename = TBN;
variables.action = TYPE;
myrequest.data = variables;
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, dataOnLoad);
loader.addEventListener(Event.CANCEL, dataError);
try
loader.load(myrequest);
catch(e:Error)
Alert.show(e.toString());
public function dataOnLoad(evt:Event):void
Alert.show(evt.target.data.Result);
if(evt.target.data.Result)
DText.text = 'ok';
else DText.text = "Error in select submitted data";
//status is a custom flag passed from back-end
public function dataError(e:Event) :void
DText.text = e.target.errormsg;
这是一个php函数端model.php:
<?php
//test for recive
$actionW = $_POST['action'];//error this line.
echo $actionW;
// end test
if(isset($_POST['action']) && !empty($_POST['action']))
$action = $_POST['action'];
echo $action;
switch($action)
case 'select' :
$tablename = clean($_POST['tablename']);
selectedData($tablename);
break;
case 'blah' : blah();break;
function selectedData($table)
// create connection
$connection = mysql_connect("localhost", "root", "") or die ("Couldn't connect to the server.");
// select database
$db = mysql_select_db("ideaddcom_maps", $connection) or die ("Couldn't select database.");
// create SQL
$sql = 'SELECT * FROM '.$table;
// execute SQL query and get result
echo $sql;
$sql_result = @mysql_query($sql, $connection) or die ("Couldn't execute query.".mysql_error());
$row = mysql_fetch_object($sql_result);
foreach($row as $cname => $cvalue)
echo "Result=$cvalue";
// free resources and close connection
mysql_free_result($sql_result);
mysql_close($connection);
//Function to sanitize values received from the form. Prevents SQL injection
function clean($str)
$str = @trim($str);
if(get_magic_quotes_gpc())
$str = stripslashes($str);
return mysql_real_escape_string($str);
?>
怎么了?请对此有任何想法,谢谢。
【问题讨论】:
粗略一看,我认为variables.action = SELECT;
没有执行,这可能意味着SELECT
未定义。您能否包括声明和初始化该变量的位置?
哦,是的,我记得评论说。我已经初始化'SELECT'是文件上方的字符串。
【参考方案1】:
我不知道您是否找到了解决问题的方法,但这可能对其他人有所帮助。
1 - 看看这里,它可以帮助你:Submitting scores from AS3 to PHP/SQL - #Error 2101
2 - 为了避免 PHP Undefined index
注意,您应该始终在使用之前验证您的 var 是否已设置,就像您在第 7 行所做的那样。
3 - 在 PHP 脚本 中避免 所有输出 未被您的 AS 脚本 使用,因为 AS只会得到第一个输出。
4 - 如果您使用for
或foreach
循环在PHP 脚本 中获取数据,您应该这样做,因为echo
会将数据发送到AS 应该执行一次:
$result = '';
$sep = ',';
foreach($row as $cname => $cvalue)
$result .= $cvalue . $sep;
echo 'Result='.$result;
【讨论】:
以上是关于PHP 无法从 ActionScript3 接收参数的主要内容,如果未能解决你的问题,请参考以下文章
关于Flash ActionScript3.0加载json数据问题
使用 Actionscript3 将图片从 XML doc 导入 Flash
从 PHP 文件接收 HTTP POST 回显响应(发送 POSTS 工作正常,这是我无法弄清楚的接收)
PHP使用CURL设置header头传参以及设置Content-Type: application/json类型的后台数据接收