flash as3获取php的变量值实现方法
HP代码 (test1.php):
不推荐写成这种含html代码的形式:
代码如下 |
复制代码 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>测试as3如何读取php的变量值</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<?php
/**
* 使用本方法的缺点是向as传值的输出语句(下文的echo语句)之后不能再有输出。
* 解决办法:可以在该输出语句的最后面再加上一个变量,而这个变量在as3中是不需要接收的,例如改成:
* echo "&coun=".$country."&pro=".$province."&city=";
*/
$country = "中国<br />";
$province = "福建";
//as3读取是是coun、pro属性值,前面的“&”不能缺少,否则该属性将读取不到
echo "&coun=".$country."&pro=".$province;
?>
<!-- 注意:本行及后面的行也会当做是pro属性的值被as3接收,所以本行及以后的行是多余的 -->
</body>
</html>
|
推荐改成这种纯php代码的形式:
代码如下 |
复制代码 |
<?php
$country = "中国<br />";
$province = "福建";
//as3读取是是coun、pro属性值,前面的“&”不能缺少,否则该属性将读取不到
echo "&coun=".$country."&pro=".$province;
?>
|
AS3代码 (Test1.as):
代码如下 |
复制代码 |
package
{
import fl.controls.Button;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;
/**
* 测试as3与php之间的交互方法1
* 本方法通过加载远程php来读取其中输出的变量值
* @author Administrator
*/
public class Test1 extends Sprite
{
/**
* 定义点击按钮
*/
private var _btn:Button;
/**
* 文本框
*/
private var _showTf:TextField;
/**
* 测试as3与php之间的交互
*/
public function Test1() {
_btn = new Button();
_btn.label = "请点击";
_btn.move(0, 0);
addChild(_btn);
_showTf = new TextField();
_showTf.autoSize = TextFieldAutoSize.LEFT;
_showTf.defaultTextFormat = new TextFormat(null, 12, 0xff0000);
_showTf.wordWrap = true;
_showTf.border = true;
_showTf.text = "内容文本框1";
_showTf.width = 660;
_showTf.x = 110;
_showTf.y = 0;
addChild(_showTf);
_btn.addEventListener(MouseEvent.CLICK, loadPhp);
}
/**
* 开始加载php
* @param event
*/
private function loadPhp(event:MouseEvent):void {
_showTf.text = "";
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
//注意此处是使用http请求的方式作为加载地址,而不能直接写成相对位置或绝对位置,例如“/test1.php”
urlLoader.load(new URLRequest("http://localhost:8081/as3php/test1.php"));
urlLoader.addEventListener(Event.COMPLETE, onCompletedHandle);
}
/**
* 加载php完成
* @param event
*/
private function onCompletedHandle(event:Event):void {
var mydata:URLVariables = URLVariables((event.currentTarget as URLLoader).data);
_showTf.text = "国家是:" + mydata.coun + " 省份是:" + mydata.pro;
}
}
}
|
上一篇文章as3获取php的变量值(1)中讲了如何用as3获取php的变量值,本文将继续对这个内容进行研究,以找出用这种方法获取php变量值的本质所在。
上面中使用的php代码如下:
代码如下 |
复制代码 |
<?php
$country = "中国<br />";
$province = "福建";
//as3读取是是coun、pro属性值,前面的“&”不能缺少,否则该属性将读取不到
echo "&coun=".$country."&pro=".$province;
?>
|
用浏览器访问这个php文件后会在浏览器上显示:
&coun=中国<br />&pro=福建
看到这里,你想到了什么?这不就是一个简单的网页文字吗?是的,的确是这样的,为了验证我们的想法,做如下测试:
新建一个html文件,写上“&coun=中国<br />&pro=福建”,再次用as3代码远程加载这个html文件,你会发现和前面加载php代码得到的结果完全相同。这就说明了一个问题——as3用这种方式获取php变量其实是先将php文件解析成html文件后再从html文件中读取相应的值。因此,这个方法不仅仅可以获取php的变量值,同样也可以用于获取jsp、asp等的变量值。
例如下面的jsp也同样可以用这种方式进行变量值获取:
代码如下 |
复制代码 |
<%
String country = "中国<br />";
String province = "福建";
//as3读取是是coun、pro属性值,前面的“&”不能缺少,否则该属性将读取不到
out.print("&coun=" + country + "&pro=" + province);
%>
|
补充:flash教程,As3.0