Suppose I have a form page that opens another html page like
below. The form action is set as follows: <form
method="GET" action="form.html">
Click the Submit button above. The form will send the
query string to a file named form.html
This Flash movie contains two textboxes.
The top one will print the value of _root.UserName, the bottom
one will print the value of _root.CompanyName. These
variables are retrieved from the query string. You can see
how the query string is passed later in this tutorial.
You should see something like above (assuming you have
JavaScript enabled). I entered john as UserName and MX9000
as CompanyName. As you can see in the Address bar
above, the form data is appended as a query string. This
is done automatically by the GET method of the <form>
tag. Here's the url, with the query string portion
in red:
http://www.permadi.com/tutorial/flashQueryString/form.html?UserName=john&CompanyName=MX9000
So far so good, now we need to pass this query string to
Flash. Again, I will show 3 ways to do this, using
JavaScript, ASP and PHP.
Using JavaScript
Using JavaScript, you can get the address of the current page by using
location
property of the document object.
So, in the above
example, the document.location will contain the value of http://www.permadi.com/tutorial/flashQueryString/form.html?UserName=john&CompanyName=MX9000
Just for fun, click
here to see what the value of document.location of this page.
It gets better, you can also just get the query string portion
by using document.location.search (the name
"search" probably comes from early days of the
internet where query string is mostly used by search engines?).
In the above
example, document.location.search will contain the value of
?UserName=john&CompanyName=MX9000
Just for fun
again, resubmit the form above and see what the value of document.location.search of
that page is. Click the Submit and Use JavaScript
button; a new page with a Flash movie will open; then use the button below the Flash movie). If you leave the default values, it should say:
Note that the "?" sign is included, which is
weird because it isn't really part of the query string.
However, for our purpose we can just pass everything to Flash by using document.write(document.location.search).
This is very similar to the method shown on Example 2 earlier:
<HTML><HEAD><TITLE>Example</TITLE></HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
<!--
document.write(
'<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"\n'+
' codebase="...see source...\n'+
' WIDTH="250" HEIGHT="250" id="flaMovie">\n'+
' <PARAM NAME=movie VALUE="flaMovie3.swf'+document.location.search+'">\n'+
' <PARAM NAME=quality VALUE=high>\n'+
' <PARAM NAME=bgcolor VALUE=#FFFFFF>\n'+
' <EMBED src="flaMovie3.swf'+document.location.search+'"\n'+
' quality=high bgcolor=#FFFFFF WIDTH="250" HEIGHT="250" NAME="flaMovie1"\n'+
' TYPE="application/x-shockwave-flash"\n'+
' PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer"></EMBED>\n'+
'</OBJECT>');
//-->
</SCRIPT>
</BODY>
</HTML>
|
Note:
-
On JavaScript 1.2, the location
property of the document is depreciated (but
still available) and is being replaced by URL (all
capitals). You can replace document.location
with window.location. Also, document.location.search
is the same as window.location.search and location.search
(assuming you don't have local variables with that same
name)
Using ASP
With ASP, you can do something similar using the Request.QueryString
object. Here's an example of it.
<HTML>
<HEAD><TITLE>Example</TITLE></HEAD>
<BODY>
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://macromedia.com/cabs/swflash.cab#version=6,0,0,0"
ID=flaMovie WIDTH=250 HEIGHT=250>
<PARAM NAME=movie
VALUE="flaMovie3.swf?<%=Request.QueryString%>">
<PARAM NAME=quality VALUE=medium>
<PARAM NAME=bgcolor VALUE=#99CC33>
<EMBED src="flaMovie3.swf?<%=Request.QueryString%>"
bgcolor=#99CC33 WIDTH=250 HEIGHT=250
TYPE="application/x-shockwave-flash">
</EMBED>
</OBJECT>
</BODY>
</HTML>
|
Note that we must add the "?" sign after the swf
filename because (unlike JavaScript), the "?"
sign is not included in the Request.QueryString.
You can try that ASP code using the form below. The form
uses <form
method="GET" action="formasp.asp">.
When you click the Submit and Use ASP button, the UserName and CompanyName
will be passed as a query string to the formasp.asp,
which executes the code above.
USING PHP
With PHP, you can do something similar using the
$QUERY_STRING
or $HTTP_GET_VARS variable. Here's an example of it.
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://macromedia.com/cabs/swflash.cab#version=6,0,0,0"
ID=flaMovie WIDTH=250 HEIGHT=250>
<PARAM NAME=movie VALUE="flaMovie3.swf?<?php echo($QUERY_STRING);?>">
<PARAM NAME=quality VALUE=medium>
<PARAM NAME=bgcolor VALUE=#99CC33>
<EMBED src="flaMovie3.swf?<?php echo($QUERY_STRING);?>"
bgcolor=#99CC33 WIDTH=250 HEIGHT=250
TYPE="application/x-shockwave-flash">
</EMBED>
</OBJECT>
|
The form
uses <form
method="GET" action="formphp.php">.
When you click the Submit and Use PHP button, the UserName and
CompanyName
will be passed as a query string to the
formphp.php,
which executes the code above.
You can apply the same concept using other scripting languages.
|