动作脚本 3,注册,数据发送到 php,但 AS3 不会显示数据返回但没有错误

Posted

技术标签:

【中文标题】动作脚本 3,注册,数据发送到 php,但 AS3 不会显示数据返回但没有错误【英文标题】:Action script 3, Registration, Data sent to php, but AS3 won't display data back but have no Error 【发布时间】:2013-10-16 16:45:18 【问题描述】:

我是 php 和 AS3 的新手,我正在尝试设置一个注册页面,AS3 会将数据发送到 php,然后它应该返回一条消息说您已成功注册。 目前的 AS3 确实将所有数据发送到数据库。但是AS3没有显示注册成功的信息,但也显示没有错误。请帮忙

我的 AS3 代码

stop();



// build variable name for the URL Variables loader
var variables:URLVariables = new URLVariables;

// Build the varSend variable
var varSend:URLRequest = new URLRequest("http://localhost/dummy.php");
varSend.method = URLRequestMethod.POST;
varSend.data = variables;

// Build the varLoader variable
var varLoader:URLLoader = new URLLoader();
varLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
varLoader.addEventListener(Event.COMPLETE, completeHandler);


// handler for the PHP script completion and return of status

  function completeHandler(event:Event):void 
  if(event.target.data && event.target.data.return_msg)
   status_txt.text = event.target.data.return_msg

 


// Add event listener for submit button click
submit.addEventListener(MouseEvent.CLICK, ValidateAndSend);

// function ValidateAndSend
function ValidateAndSend (event:MouseEvent):void 

// validate fields
if(!name_txt.length) 
status_txt.text = "Please enter your name";
 else if (!email_txt.length) 
status_txt.text = "Please enter your email";
 else if (!pass_txt.length) 
status_txt.text = "Please enter your password";
 else  


// ready the variables in our form for sending
variables.username = name_txt.text;
variables.email = email_txt.text; 
variables.password = pass_txt.text;

        // if error occurs


// Send the data to PHP now
varLoader.load(varSend);


 // close else condition for error handling


下面是我的php代码

<?php

ini_set('display_errors', 1); error_reporting(E_ALL);
include 'connect.php';



 //get form data
 $username = ($_POST['username']);
 $password = ($_POST['password']);
 $email = ($_POST['email']);

 if (!$username||!$password||!$email)
 
     $fill= "Please fill out all fields";
 echo ($fill) ;
 

 else
 
    //encrypt password
    $password = md5($password);

    //check if username already taken
    $check = mysqli_query($con,"SELECT * FROM Test WHERE username = '$username'") or die( mysqli_error());
    if (mysqli_num_rows($check)>=1)
    
    echo "return_msg=Username_already_taken";

    else
    




           //register into database
            mysqli_query($con,"INSERT INTO Test (username,password,email) VALUES 
                ('$username','$password','$email');") or die(mysqli_error());
        


    echo "return_msg=success" ;    


 

 


?>

非常感谢您的时间和帮助

【问题讨论】:

首先在completeHandler 中跟踪您的响应,然后在您的条件逻辑输入trace('this happened: ' + event.target.data); 之前,看看您得到了什么。 我把它放在完成处理程序之后,我在输出中得到了这个,我真的不知道我应该看什么。字体应该嵌入任何可以在运行时编辑的文本,而不是具有“使用设备字体”设置的文本。使用文本 > 字体嵌入命令嵌入字体。 [SWF] t.swf - 531607 字节解压后发生这种情况:%0A%0A%20%20return%5Fmsg=success%0D%0A%0D%0A%0D%0A 我也不确定为什么会这样,但这就是 php 返回到您的 AS 的原因。 【参考方案1】:

根据您在跟踪event.target.data 时的响应,php 正在发送响应。由于条件逻辑,您什么也看不到。 event.target.data 确实存在,但不存在 event.target.data.return_msg

您可以删除条件逻辑并拥有

function completeHandler(event:Event):void 
    status_txt.text = event.target.data
 

这将为您提供从您的 php.ini 返回的字符串。您可以使用 trim 清除空格(测试响应中的 url_encoded 字符),然后根据需要将其拆分为 = 符号。我个人喜欢使用JSON 符号来与 AS3 和 PHP 进行通信...

编辑添加:

Adobe Docs 中提到了一个 StringHelper 类,但我在 DocumentClass 中使用以下函数来修剪响应:

public static function trim(s:String):String
    return s.replace(/^([\s|\t|\n]+)?(.*)([\s|\t|\n]+)?$/gm, "$2");

【讨论】:

非常感谢您的帮助,我会尝试一下 我使用 unescape() 来清除 url_encoded 字符,因为我不知道如何修剪清除空间。但我还有很多空间。想知道你是否知道,我该怎么办?或者我如何修剪空间? 我编辑了我的答案以包含我用于此目的的 trim 函数。

以上是关于动作脚本 3,注册,数据发送到 php,但 AS3 不会显示数据返回但没有错误的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有图像的字节数组从 AS3 发送到 PHP?

ActionScript 3 AS3谁调用了我的动作脚本方法?

动作脚本 3 滑动功能(不会滑动)

将动作脚本 2 转换为动作脚本 3

动作脚本中的Java Map等效实现?

如何使用动作脚本 3.. 调整 xml 数据中段落之间的填充?