March 6, 2010
How to access query string arguments with AS3
Category: ActionScript, khadlock at 11:49 am
Found a great blog post with an ActionScript 2 class that parses the current URL and creates accessible properties out of query string arguments: http://blog.circlecube.com/2008/03/20/get-current-url-and-query-string-parameters-to-flash-tutorial/
I needed something to parse any URL, so I made a few adjustments and converted the class to AS3. Here's the updated code:
package { import flash.external.*; public class QueryString { private var _queryString:String; private var _all:String; private var _params:Object; public function QueryString(url:String='') { readQueryString(url); } public function get getQueryString():String { return _queryString; } public function get url():String { return _all; } public function get parameters():Object { return _params; } private function readQueryString(url:String=''):void { _params = new Object(); try { _all = (url.length > 0) ? url : ExternalInterface.call("window.location.href.toString"); _queryString = (url.length > 0) ? url.split("?")[1] : ExternalInterface.call("window.location.search.substring", 1); if(_queryString) { var allParams:Array = _queryString.split('&'); //var length:uint = params.length; for(var i:int=0, index=-1; i < allParams.length; i++) { var keyValuePair:String = allParams[i]; if((index = keyValuePair.indexOf("=")) > 0) { var paramKey:String = keyValuePair.substring(0,index); var paramValue:String = keyValuePair.substring(index+1); _params[paramKey] = paramValue; } } } } catch(e:Error) { trace("Some error occured. ExternalInterface doesn't work in Standalone player."); } } } }
Here's an example of how to use the updated version:
var myPath:QueryString = new QueryString("http://www.studiosedition.com/?page=articles"); trace(myPath.parameters.page);
It's as simple as passing a URL with a query string and then just use the parameters object to access the specific query argument, in this case we're accessing the page argument, which will give us a value of "articles".
Leave a Reply
