ActionScript3 : QueryString

sábado, 27/03/2010 12:57 am  

Um tempo atrás conversando com o @jandersonfc [site], comentei sobre uma funcionalidade que estava utilizando nas minhas aplicações em Adobe Flex para ler parâmtros da URL e havia comentado que iria publicar, bom finalmente estou publicando, segue…

querystring

Então aqui temos a nossa aplicação em Adobe Flex lendo os parâmetros da URL, para isto utilizaremos uma classe de apoio que irá acessar via ExternalInterface o HTML/Javascript da página para ler os parâmetros.

 

Aplicação Adobe Flex de teste: 

?View Code ACTIONSCRIPT3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<mx:Application 
	xmlns:mx="http://www.adobe.com/2006/mxml" 
	pageTitle="Exemplo de uso QueryString"
	layout="vertical" 
	creationComplete="init()" horizontalAlign="center">
 
	<mx:Script>
		<![CDATA[
			import com.erkobridee.flex.util.html.QueryString;
 
			private function init():void {
				var query:QueryString = new QueryString();
 
				param1Field.text = query.parameters.param1; 
				// ou > query.parameters["param1"];
 
				param2Field.text = query.parameters.param2; 
				// ou > query.parameters["param2"]; 
			}
		]]>
	</mx:Script>
	<mx:Form>
		<mx:FormItem label="param1">
			<mx:TextInput id="param1Field"/>
		</mx:FormItem>
		<mx:FormItem label="param2">
			<mx:TextInput id="param2Field"/>
		</mx:FormItem>
	</mx:Form>
 
</mx:Application>

Obs.: para executar o teste é necessário que a aplicação esteja em um servidor Web, para isto no Adobe Flex Builder, gerei o Export bin-release e o conteúdo dessa pasta criei uma pasta [ querystring ] no meu servidor Apache PHP [no Windows você pode usar o XAMPP] local

 

Classe de auxílio para a leitura dos parâmetros da URL:

?View Code ACTIONSCRIPT3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
/**
 * Classe para auxiliar a leitura dos parâmetros presentes na URL
 * em uma aplicação Adobe Flex
 * 
 * Obs.: em todos os testes e uso até o presente momento, 
 * verifiquei a compatibilidade com os Web Browsers:
 * - Firefox
 * - Internet Explorer 8
 * - Google Chrome
 */
package com.erkobridee.flex.util.html {
 
	import flash.external.*;
	import flash.utils.*;
 
	public class QueryString {
 
		private var _queryString:String;
		private var _all:String;
		private var _params:Object;
 
		public function get queryString():String {
			return _queryString;
		}
		public function get url():String {
			return _all;
		}
		public function get parameters():Object {
			return _params;
		}
 
		public function QueryString() {
			readQueryString();
		}
 
		private function readQueryString():void {
			_params = {};
 
			try {
 
				// acessa as informações da página HTML
				_all =  ExternalInterface.call("window.location.href.toString");
				_queryString = ExternalInterface.call("window.location.search.substring", 1);
 
				if(_queryString) {
 
					var params:Array = _queryString.split('&');
					var length:uint = params.length;
 
					for (var i:uint=0,index:int=-1; i<length; i++) {
						var kvPair:String = params[i];
						if((index = kvPair.indexOf("=")) > 0) {
							var key:String = kvPair.substring(0,index);
							var value:String = kvPair.substring(index+1);
							_params[key] = value;
						}
					}
				}
			} catch(e:Error) { 
				trace("Some error occured. ExternalInterface doesn't work in Standalone player."); 
			}
		}
 
	}
 
}

 

Caso queria o projeto [QueryString] obs.: em Adobe Flex Builder 3

 

Essa solução foi publicada neste [post] onde também foi disponibilizado uma versão web para testar essa solução [aplicação de teste]

, , , ,

Este post foi escrito por:

- que escreveu 500 post(s).


Entre em contato

  • http://intensedebate.com/people/jandersonfc jandersonfc

    show de bola erko,ótima dica , abraços amigo!