Recipe 18.5 Sending Variables and Handling a Returned Result

18.5.1 Problem

You want to send variables to a server-side script and handle the results of the server-side processing.

18.5.2 Solution

Use the LoadVars.sendAndLoad( ) method.

18.5.3 Discussion

You should use the sendAndLoad( ) method when you want to send variables to a server-side script and have the results returned to Flash. An example of such a scenario is a Flash storefront for a product catalog that is stored in a database. Typically, items are categorized. When a user selects a category, the Flash movie might send the selected category ID to a server-side script and expect the script to return all the items in the category.

The sendAndLoad( ) method sends variables to a server-side script in the same way that the send( ) method does. Any enumerable properties of the LoadVars object are automatically sent to the script at the specified URL. The difference between send( ) and sendAndLoad( ) is that with the latter you must also provide a reference to a LoadVars object that handles the loading of the results. You can use the same LoadVars object to load the returned data as you used to send the variables. However, it is a best practice to specify a different object for loading the data. Using two LoadVars objects avoids conflicts with variable names. Otherwise, if the sending object has a property with the same name as one of the loaded variables, the loaded variable overwrites the sending object's property. Here is an example using two separate LoadVars objects (one for sending and one for receiving):

// Create an object to handle the data loading. Define an onLoad(  ) method.
loadLV = new LoadVars(  );
loadLV.onLoad = function (success) {
  if (success) {
    trace("loaded results");

// Create an object to send the variables to the script.
sendLV = new LoadVars(  );

// Define at least one variable to send.
sendLV.categoryID = 42;

// Invoke the sendAndLoad(  ) method specifying loadLV as the object that handles the
// loading of the returned data.
sendLV.sendAndLoad("cgi-bin/getCategoryItems.cgi", loadLV);

18.5.4 See Also

Recipe 18.4. Recipe 19.14 covers analogous functionality using XML. Also refer to Recipe 17.3.

    Part I: Local Recipes
    Part II: Remote Recipes