# URL Query Vars Class

**URL:** <https://forum.kirupa.com/t/url-query-vars-class/205065>\
**Category:** flash\
**Created:** [October 25, 2006, 8:14pm UTC](https://forum.kirupa.com/t/url-query-vars-class/205065 "2006-10-25T20:14:01Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![buginajar](https://avatars.discourse-cdn.com/v4/letter/b/f07891/32.png) [@buginajar](https://forum.kirupa.com/u/buginajar)\
**Post date:** [October 25, 2006, 8:14pm UTC](https://forum.kirupa.com/t/url-query-vars-class/205065/1 "2006-10-25T20:14:01Z")

</div>

**[color=blue]VERIFIED WORKING ON FIREFOX 1.8+, SAFARI 2.0+ & MSIE 6+[/color]**

This may also work on older versions, however I have not verified them.

**The Fix**

- Any swf that uses ExternalInterface must be embedded into the code dynamically using javascript (i.e. SWFObject / [http://blog.deconcept.com/swfobject](http://blog.deconcept.com/swfobject)) in order to be compatible with all three browsers.

- You are able to pass inline functions using Externalinterface.call, however in order to work the must be generic in order to work in Safari:

---- WORKS: ExternalInterface.call(“function(){return true;}”);

---- DOES NOT WORK: ExternalInterface.call(“function getVariable(){return true;}”);

**Test URL**  
[http://www.frozenflame.net/queryTest.htm?test=howdy](http://www.frozenflame.net/queryTest.htm?test=howdy)

Below is the code to my request class based on MichaelxxOA’s urlQuery class ([http://www.actionscript.org/forums/s](http://www.actionscript.org/forums/s)…php3?t=119839).

```
* Only calls ExternalInterface to execute the javascript once.
* Uses a single Static call for variable request // Request.QueryString("varName");
* Datatypes numbers, booleans and strings.

```

Request.as

```auto

//External Interface Class
import flash.external.ExternalInterface;

class com.Javascript.Request
{

    //STATIC PROPERTIES
    //----------------------------------------------
    
    //Switch to Load Vars if they haven't already been loaded
    private static var hasLoaded:Boolean = false;
    
    //Define Javascript Function
    private static var getTheURL:String = "function(){return window.location.href.toString();}";
    
    //Array to store values once they have been loaded.
    private static var values:Array = new Array();

    //CONSTRUCTOR
    //----------------------------------------------
    public function Request(){}
    
    
    
    //PUBLIC STATIC METHODS
    //----------------------------------------------
    //--Query String
    public static function QueryString(varName:String)
    {
        //Pull Valuse From Query String if you havent already.
        if(!hasLoaded)
        {
            hasLoaded = true;
            getValueArray();
        }
        
        return values[varName];
    }
    
    //--Get Values From Query String
    private static function getValueArray():Void
    {
        trace("]> Loading Variables from Query String.");
        trace(" (" + getTheURL + ")");
        trace("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
        
        var o:Array = new Array();
        
        //Call Javascript Function
        //ExternalInterface.call("document.write",["<script>" + "
" + "<!--" + "
" + "function getTheURL()" + "
" + "{" + "
" + "return window.location.href.toString();" + "
" + "}" + "
" + "-->" + "
" + "<\/script>"]);
        o = ExternalInterface.call(getTheURL).split("?")[1].split("&");
        
        for(var i:Number = 0; i < o.length; i ++)
        {
            var tempName:String = o*.split("=")[0];
            var tempValue:String = o*.split("=")[1];
            
            trace(" - " + tempName + " = " + tempValue);
            
            if(!isNaN(Number(tempValue)))
            {
                //Datatype value as a Number
                values[tempName] = Number(tempValue);
                
            }else if(tempValue.toLowerCase() == "true" || tempValue.toLowerCase() == "false"){
                //DataType value as a Boolean
                values[tempName] = Boolean(tempValue);
                
            }else{
                values[tempName] = tempValue;
            }
        }
        
        trace("=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=");
    }
    
}

```

Implementation:

```auto

var pageID:String = Request.QueryString("pageID");

```

Hope this helps!

Original Thread: [http://www.actionscript.org/forums/showthread.php3?t=119964&highlight=URLQuery](http://www.actionscript.org/forums/showthread.php3?t=119964&highlight=URLQuery)
