登录屏幕的 Flash AS3 错误 #2101

Posted

技术标签:

【中文标题】登录屏幕的 Flash AS3 错误 #2101【英文标题】:Flash AS3 Error #2101 for login screen 【发布时间】:2015-07-10 12:31:57 【问题描述】:

我还是 AS3 编程的新手 我试图让登录屏幕在我的 AIR 应用程序上工作,但出现错误 #2101 传递给 URLVariables.decode() 的字符串必须是 URL 编码的查询字符串,其中包含名称/值对。

这是 processLogin 的代码

            public function processLogin():void 

                if(username.text != "" && password.text != "")
                
                   var checkName = username.text
                   var checkPass = password.text
                   var resulttext = result_text.text

                   var request:URLRequest = new URLRequest("http://localhost/caservers/aksessistemlogin.php")
                   var loader:URLLoader = new URLLoader()    

                   var variables:URLVariables = new URLVariables()
                       variables.username = checkName            
                       variables.password = checkPass
                       variables.systemResult = resulttext
                   loader.dataFormat = URLLoaderDataFormat.VARIABLES
                   request.data = variables

                   request.method = URLRequestMethod.POST
                   loader.addEventListener(Event.COMPLETE, logincheck)
                   loader.load(request)

               
               function logincheck (event:Event):void 

                  if (username.text == checkName && password.text == checkPass)
                     gotoAndPlay(2);
                  else
                     result_text.text = resulttext ;
                  
               
            

这是PHP的代码

      <?php 
          include_once "connect.php";
          $username = $_POST['username'];
          $password = $_POST['password'];
          if ($_POST['systemCall'] == "checkLogin") 
              $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
              $query = mysqli_query($sql);
              $login_counter = mysqli_num_rows($query);
              if ($login_counter > 0) 
              while ($data = mysqli_fetch_array($query)) 

              
               else 
                  $systemResult = "The login details don't match our records";
              
          
      ?>

我打算做的是检查用户名和密码是否与数据库中的用户名和密码匹配,我遵循了一些教程,但即使没有在文本输入中输入任何内容,它最终也会前进到下一帧(只需点击提交)。

任何帮助将不胜感激!提前谢谢..

【问题讨论】:

你真的需要学习如何在 AS3 中使用分号 正如我之前所说,我是一个新手,这让我很困惑,因为有些教程使用了分号,而其他的则没有.. 没关系,只要去掉这行:loader.dataFormat = URLLoaderDataFormat.VARIABLES 啊是的,它现在可以工作了!非常感谢 :D 编辑:把它作为答案,所以我可以选择它:) 【参考方案1】:

当你在 AS3 中有这条线时:

loader.dataFormat = URLLoaderDataFormat.VARIABLES;

您告诉 Flash 将来自加载器的 响应 解码为 URL 编码变量。但是,您的响应不能是这样,因为当它尝试将 PHP 页面的输出解码为 URL 变量时会出现错误。

当您将URLVariables 对象分配给数据属性时,Flash 会自动知道您正在发送 URL 编码数据。

【讨论】:

感谢您的解释!我觉得很笨哈哈,我会在这个AS3上多学习一点,非常感谢! :) 别傻了,属性名很模糊,不清楚是指传出数据还是传入数据!这只是你在学习过程中学到的东西之一。 我会注意那个!万一我犯了同样的错误哈哈哈

以上是关于登录屏幕的 Flash AS3 错误 #2101的主要内容,如果未能解决你的问题,请参考以下文章

AS3 Flash Builder 错误 参数数量不正确

安全沙箱违规Flash AS3

Flash AS3.0 - 错误 1180 调用可能未定义的方法 gotoAndPlay?

AS3 Flash 中的类型强制

单击时尝试转换按钮颜色 flash as3

Flash CS3 AS3 影片剪辑转移到其他帧