View comments | RSS feed

loadVariables function

loadVariables(url:String, target:Object, [method:String]) : Void

Reads data from an external file, such as a text file or text generated by ColdFusion, a CGI script, Active Server Pages (ASP), PHP, or Perl script, and sets the values for variables in a target movie clip. This action can also be used to update variables in the active SWF file with new values.

The text at the specified URL must be in the standard MIME format application/x-www-form-urlencoded (a standard format used by CGI scripts). Any number of variables can be specified. For example, the following phrase defines several variables:

company=Macromedia&address=600+Townsend&city=San+Francisco&zip=94103

In SWF files running in a version earlier than Flash Player 7, url must be in the same superdomain as the SWF file that is issuing this call. A superdomain is derived by removing the leftmost component of a file's URL. For example, a SWF file at www.someDomain.com can load data from a source at store.someDomain.com because both files are in the same superdomain of someDomain.com.

In SWF files of any version running in Flash Player 7 or later, url must be in exactly the same domain as the SWF file that is issuing this call (see "Flash Player security features" in Using ActionScript in Flash). For example, a SWF file at www.someDomain.com can load data only from sources that are also at www.someDomain.com. If you want to load data from a different domain, you can place a cross-domain policy file on the server hosting the SWF file that is being accessed. For more information, see "About allowing cross-domain data loading" in Using ActionScript in Flash.

If you want to load variables into a specific level, use loadVariablesNum() instead of loadVariables().

Availability: ActionScript 1.0; Flash Player 4 - Behavior changed in Flash Player 7.

Parameters

url:String - An absolute or relative URL where the variables are located. If the SWF file issuing this call is running in a web browser, url must be in the same domain as the SWF file; for details, see the Description section.

target:Object - The target path to a movie clip that receives the loaded variables.

method:String [optional] - Specifies an HTTP method for sending variables. The parameter must be the string GET or POST . If there are no variables to be sent, omit this parameter. The GET method appends the variables to the end of the URL and is used for small numbers of variables. The POST method sends the variables in a separate HTTP header and is used for long strings of variables.

Example

The following example loads information from a text file called params.txt into the target_mc movie clip that is created using createEmptyMovieClip(). The setInterval() function is used to check the loading progress. The script checks for a variable in the params.txt file named done.

this.createEmptyMovieClip("target_mc", this.getNextHighestDepth());
loadVariables("params.txt", target_mc);
function checkParamsLoaded() {
 if (target_mc.done == undefined) {
 trace("not yet.");
 } else {
 trace("finished loading. killing interval.");
 trace("-------------");
 for (i in target_mc) {
 trace(i+": "+target_mc[i]);
 }
 trace("-------------");
 clearInterval(param_interval);
 }
}
var param_interval:Number = setInterval(checkParamsLoaded, 100);

The external file, params.txt, includes the following text:

var1="hello"&var2="goodbye"&done="done"

See also

loadVariablesNum function, loadMovie function, loadMovieNum function, getURL function, loadMovie (MovieClip.loadMovie method), loadVariables (MovieClip.loadVariables method), load (LoadVars.load method)


Version 8

Comments


mike6496 said on May 22, 2006 at 2:52 PM :
should "target:Object" be "target:MovieClip" ?
the example and some of the documentation indicates that it has to be a MovieClip (and not an Object)
No screen name said on Aug 24, 2006 at 1:06 PM :
Documentation for loadVariables is not correct - the example does not work for Flash 8. I've adjusted the example to work:

var path = "comic" + _root.nComic + "/filecount.txt";
_root.loadVariables(path,this);

function checkParamsLoaded() {
if (_root.fileCount == undefined) {
trace("not yet.");
} else {
trace("finished loading. killing interval.");
trace("-------------");
trace(_root.fileCount);
trace("-------------");
clearInterval(param_interval);
}
}
var param_interval:Number = setInterval(checkParamsLoaded, 100);
Knud59 said on Dec 28, 2006 at 9:18 AM :
If the string variables in the external document contain Danish special characters (entered from the keyboard or urlencoded as %e5, %e6 or %f8) the variable is not read correctly. The offending character is omitted along with the next two characters (lowercase Danish) or the next character (upper case Danish). The resulting string has a charachter with a code value of 65533 at the place of the Danish character.
Embedding the Latin1 font in the swf file does not help.
When using "Test Movie" the program doesn't finish reading the external file.

 

RSS feed | Send me an e-mail when comments are added to this page | Comment Report

Current page: http://livedocs.adobe.com/flash/8/main/00001741.html