2016-05-25 58 views
-2

我使用as3 votingpoll來獲取這個錯誤。 我不明白什麼是錯的,因爲我只知道基本的編碼。 我真的需要得到這個學校項目的工作。As3 + PHP錯誤

希望有人能幫助我! 非常感謝

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"; 
    } 
} 
?> 
+0

感謝注意到 –

+0

沒有任何一個可以幫助? –

回答

0

顯然,你event.target.data.return_msg或event.target。 data.choice1Count等變量爲空(空)。

首先檢查您的PHP腳本是否回顯正確的回覆($ my_msg或$ choice1Count也可能爲null)。如果PHP腳本是好的,嘗試在completeHandler方法跟蹤這些值:

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