As3 + PHP错误

时间:2016-05-25 19:50:46

标签: php actionscript-3

我使用as3 votingpoll获取此错误。 我不明白什么是错的,因为我只知道基本编码。 我真的需要让这个适合学校项目。

希望任何人都可以帮助我! 非常感谢

TypeError: Error #2007: Parameter text must be non-null.
at flash.text::TextField/set text()
at Onlinepoll_fla::WholePoll_1/completeHandler()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()

AS3代码请求:

stop(); // Stop the timeline since it does not need to travel for this to run

// Assign a variable name for our URLVariables object
var variables1: URLVariables = new URLVariables();

//  Build the varSend variable
var varSend1: URLRequest = new URLRequest("parse_my_poll.php");
varSend1.method = URLRequestMethod.POST;
varSend1.data = variables1;

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

// Set variable to send to PHP here for the varloader below
variables1.myRequest = "load_numbers";


// Send data to php file now, and wait for response using the COMPLETE event
varLoader1.load(varSend1);

function completeHandler1(event: Event): void {
    count1_txt.text = "" + event.target.data.choice1Count;
    count2_txt.text = "" + event.target.data.choice2Count;
    count3_txt.text = "" + event.target.data.choice3Count;
}

**as3 Send code**
// hide the little processing movieclip
processing_mc.visible = false;

// Initialize the choiceNum variable that we will use below
var choiceNum:Number = 0;

// Set text formatting colors for errors and success messages
var errorsFormat:TextFormat = new TextFormat();
errorsFormat.color = 0xFF0000; // bright red

var successFormat:TextFormat = new TextFormat();
successFormat.color = 0x00FF00; // bright green

/////////////////////////////////////////////////////////////
// Button Click Functions
function btn1Click(event:MouseEvent):void{
    choiceNum = 1;
    choice_txt.text = choice1_txt.text;
}
function btn2Click(event:MouseEvent):void{
    choiceNum = 2;
    choice_txt.text = choice2_txt.text;
}
function btn3Click(event:MouseEvent):void{
    choiceNum = 3;
    choice_txt.text = choice3_txt.text;
}
// Button Click Listeners
btn1.addEventListener(MouseEvent.CLICK, btn1Click);
btn2.addEventListener(MouseEvent.CLICK, btn2Click);
btn3.addEventListener(MouseEvent.CLICK, btn3Click);

//////////////////////////////////////////////////////////////
// Assign a variable name for our URLVariables object
var variables:URLVariables = new URLVariables();

//  Build the varSend variable
var varSend:URLRequest = new URLRequest("parse_my_poll.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 PHP script completion and return
function completeHandler(event:Event):void{
    // remove processing movieclip
    processing_mc.visible = false;
    // Clear the form fields
    choice_txt.text = choice1_txt.text;
    choiceNum = 0;
    // Load the response from the PHP file
    status_txt.text = event.target.data.return_msg;
    status_txt.setTextFormat(errorsFormat);
    if (event.target.data.return_msg == "Thanks for voting!") {
        // Reload new values into the count texts only if we get a proper response and new values
        status_txt.setTextFormat(successFormat);
        count1_txt.text = "" + event.target.data.choice1Count;
        count2_txt.text = "" + event.target.data.choice2Count;
        count3_txt.text = "" + event.target.data.choice3Count;
    }  
}

// Add an event listener for the submit button and what function to run
vote_btn.addEventListener(MouseEvent.CLICK, ValidateAndSend);

// Validate form fields and send the variables when submit button is clicked
function ValidateAndSend(event:MouseEvent):void {
    //validate form fields
    if(!choice_txt.length) {  
        // if they forgot to choose before pressing the vote button
        status_txt.text = "Please choose before you press vote.";  
        status_txt.setTextFormat(errorsFormat);

    } else {
        status_txt.text = "Sending...";
        processing_mc.visible = true;
        // Ready the variables for sending
        variables.userChoice = choiceNum;
        variables.myRequest = "store_choice";  
        // Send the data to the php file
        varLoader.load(varSend);
    } // close else after form validation

} // Close ValidateAndSend function ////////////////////////

PHP代码:

<?php
/* 
::::::::::Script Written By: Adam Khoury @ www.developphp.com:::::::::::::
:::::::::If you find www.developphp.com tutorials helpful or handy:::::::::::::
:::::::::::please link to it wherever possible to help others find it::::::::::::::::
*/
// ---------------------------------------- Section 1 -----------------------------------------------
//  IMPORTANT!!!! Connect to MySQL database here(put your connection data here)
mysql_connect("localhost","root","") or die (mysql_error());
mysql_select_db("data") or die (mysql_error());

// When Flash requests the totals initially we run this code
if ($_POST['myRequest'] == "load_numbers") {

    // Query the totals from the database
    $sql1 = mysql_query("SELECT id FROM votingPoll WHERE choice='1'"); 
    $choice1Count = mysql_num_rows($sql1); 
    $sql2 = mysql_query("SELECT id FROM votingPoll WHERE choice='2'"); 
    $choice2Count = mysql_num_rows($sql2); 
    $sql3 = mysql_query("SELECT id FROM votingPoll WHERE choice='3'"); 
    $choice3Count = mysql_num_rows($sql3); 

    echo "choice1Count=$choice1Count";
    echo "&choice2Count=$choice2Count";
    echo "&choice3Count=$choice3Count";

}

// ---------------------------------------- Section 2 -----------------------------------------------
// IF POSTING A USER'S CHOICE
if ($_POST['myRequest'] == "store_choice") {

    //Obtain user IP address 
    $ip = $_SERVER['REMOTE_ADDR'];
    // Create local variable from the Flash ActionScript posted variable
    $userChoice   = $_POST['userChoice'];
    $sql = mysql_query("SELECT id FROM votingPoll WHERE ipaddress='$ip'");
    $rowCount = mysql_num_rows($sql);
    if ($rowCount == 1) {

        $my_msg = "You have already voted in this poll.";
        print "return_msg=$my_msg";

    } else {

        $sql_insert = mysql_query("INSERT INTO votingPoll (choice, ipaddress) VALUES('$userChoice','$ip')")  or die (mysql_error());
        $sql1 = mysql_query("SELECT * FROM votingPoll WHERE choice='1'");
        $choice1Count = mysql_num_rows($sql1);
        $sql2 = mysql_query("SELECT * FROM votingPoll WHERE choice='2'");
        $choice2Count = mysql_num_rows($sql2);
        $sql3 = mysql_query("SELECT * FROM votingPoll WHERE choice='3'");
        $choice3Count = mysql_num_rows($sql3);
        $my_msg = "Thanks for voting!";
        echo "return_msg=$my_msg";
        echo "&choice1Count=$choice1Count";
        echo "&choice2Count=$choice2Count";
        echo "&choice3Count=$choice3Count";
    }
}
?>

1 个答案:

答案 0 :(得分:0)

显然,您的event.target.data.return_msg或event.target.data.choice1Count等变量为空(null)。

首先检查您的PHP脚本是否回显正确的响应($ my_msg或$ choice1Count也可能为null)。如果PHP脚本没问题,请尝试在completeHandler方法中跟踪这些值:

trace("message : " + event.target.data.return_msg);
trace("choice1Count : " + event.target.data.choice1Count);