以为在as3里面和后台通讯也是那么简单的事情,但实践告诉你,还是要遇到很多麻烦,例如不像as2里面loadVars方法已经被废弃,而改用一系列的类来实现与后台数据的交互,这些类是:URLLoader,URLLoaderDataFormat,URLStream,URLVariables。
在使用URLLoaderDataFormat.VARIABLES时报以下错误:
Error: Error #2101: 传递给 URLVariables.decode() 的字符串必须是包含名称/值对的 URL 编码的查询字符串。
1 2 3 4 | at Error$/throwError() at flash.net::URLVariables/decode() at flash.net::URLVariables$iinit() at flash.net::URLLoader/flash.net:URLLoader::onComplete() |
出现些错误其实在于php里的第一行echo输出的信息中是否包含了url参数方式的;
以下的方式是正确的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | $flashData = $_POST['message']; $phpMessage = 'im php message!'; echo "phpMessage=$phpMessage&flashMessage=$flashData"; ?> 或 <?php $flashData = $_POST['message']; $phpMessage = 'im php message!'; echo "phpMessage=$phpMessage&flashMessage=$flashData"; echo "其他信息"; ?> 以下方式就会报错: <?php $flashData = $_POST['message']; $phpMessage = 'im php message!'; echo "sfsdfghfghfghfghgfhsf"; //不是url参数形式即不是 变量名=值 然后用 & 连接的格式; ?> 或 <?php $flashData = $_POST['message']; $phpMessage = 'im php message!'; echo "klsdfjlsdkfjlksdjflkjsdf"; //这是第一个echo, flash找不到匹配的 url参数形式的字符串; echo "phpMessage=$phpMessage&flashMessage=$flashData"; |
这个echo就需要写的很规范了,不能像as2时代乱来了。不过一般时候,还是可以用2进制来监控,只要加载完毕就OK。