Groups | Blog | Home
all groups > flash actionscript > january 2005 >

flash actionscript : Can't get ActionSctipt to work with callback data


zerosin
1/30/2005 9:37:21 PM
Everything works with this script even sending mail except it does not seem to
be responding with the data sent back from the PHP script. If I use an HTML
based form to send the data, I get the correct responses echoed when the PHP
script is run. For some reason the listener I created for the Actionscript
isn't working. Please help! I have included the code I am using.



//start off with submit button dimmed

submit_mc._alpha = 40;

//create the LoadVars objects which will be used later
//one to send the data...
dataSender = new LoadVars();

//and one to recieve what comes back
dataReceiver = new LoadVars();

/*
create listener for Key Object
this is just a U.I. thing - "wakes up" the submit button
when all fields have at least some content
*/

formCheck = new Object();
formCheck.onKeyUp = function() {
if (name_txt.text != '' &&
email_txt.text != '' &&
subject_txt.text != '' &&
message_txt.text != '') {
//clear any alert messages
alert_txt.text = '';
//enable the submit button
submit_mc._alpha = 100;
} else {
//remain disabled until all fields have content
submit_mc._alpha = 40;
}
}

Key.addListener(formCheck);

/*#######SET STYLES FOR TEXT FIELDS#######*/

//define styles for both normal and focussed
//set hex values here that work with your site's colors

normal_border = 0x7A7777;
focus_border = 0xFA8D00;

normal_background = 0xECECE6;
focus_background = 0xE9E3E3;

normal_color = 0x776D6C;
focus_color = 0x000000;

//create an array containing the fields we wish to have styles applied to

inputs=[name_txt,email_txt,subject_txt,message_txt];

/*
a "for in" loop now iterates through each element in the "inputs" array
and applies our "normal" formatting to each input text field
*/

for( var elem in inputs) {
inputs[elem].border = true;
inputs[elem].borderColor = normal_border;
inputs[elem].background = true;
inputs[elem].backgroundColor = normal_background;
inputs[elem].textColor = normal_color;
}

/*
this takes care of applying the "normal" style to each of the four input
fields;
the following TextField prototypes handle highlighting when an input field
gains focus and resetting to normal when a field loses focus
*/

//create a textField prototype to handle set and kill focus behaviors

TextField.prototype.onSetFocus = function() {
this.borderColor = focus_border;
this.backgroundColor = focus_background;
this.textColor = focus_color;
}

TextField.prototype.onKillFocus = function() {
this.borderColor = normal_border;
this.backgroundColor = normal_background;
this.textColor = normal_color;
}

//finally: make the first field (name_txt) selected when the movie loads

Selection.setFocus(name_txt);

/*DEFINE SUBMIT BUTTON BEHAVIOR*/

submit_mc.onRelease = function() {
//final check to make sure fields are completed
if (name_txt.text != '' &&
email_txt.text != '' &&
subject_txt.text != '' &&
message_txt.text != '') {
alert_txt.text='';//clear any previous error messages or warnings
//advance playhead to frame 2 - the "processing" message
_root.play();
//assign properties to LoadVars object created previously
dataSender.name = name_txt.text;
dataSender.email = email_txt.text;
dataSender.subject = subject_txt.text;
dataSender.message = message_txt.text;
//callback function - how to handle what comes abck
dataReceiver.onLoad = function() {
if (this.response == "invalid") {
_root.gotoAndStop(1);
alert_txt.text = "Please check email address - does not appear valid."
} else if (this.response == "error") {
_root.gotoAndStop(3);
} else if (dataReceiver.response == "passed") {
_root.gotoAndStop(4);
}
}
//now send data to script
/*************************
NOTE: the line below presumes the Flash swf file and php script are in the
SAME DIRECTORY on your server. If this is not the case (if for example you
wish to put the php script along with other similar items in a "scripts"
directory) you MUST MODIFY THE PATH. Otherwise the Flash movie won't be
able to locate the php script.
*************************/
dataSender.sendAndLoad("processEmail.php", dataReceiver, "POST");
} else {
//warning if they try to submit before completing
alert_txt.text = "Please complete all fields before submitting form.";
}
}
zerosin
2/1/2005 12:42:53 AM
AddThis Social Bookmark Button