Programação, PHP, Javascript, HTML, CSS, Python
sexta, 3 de setembro

Variáveis GET e o Javascript

Variáveis GET são variáveis definidas via o método HTTP GET. Essas variáveis são visíveis para todos, ficam presentes na URL.

O acesso dessas informações por Javascript pode ser interessante por diversos motivos:

  • Script dinâmico com base na URL
  • Modificar parâmetros de URLs sem ter que usar formulários

Variáveis GET e o Javascript

Acessando variáveis GET por Javascript

O método URL.parse() identifica as variáveis GET da URL atual ou de uma URL. Uma vez que as variáveis foram identificadas, seus valores são acessados através do método URL.get().

URL atual

// www.jarbs.com.br/?teste=sim&valor=1

// identifica as variáveis da URL
URL.parse();

// o acesso das variáveis é feito através do método URL.get
URL.get('teste');
>>> sim

URL.get('valor');
>>> 1

De uma URL

URL.parse('index?var1=A&var2=B');

URL.get('var1');
>>> A

URL.get('var2');
>>> B

Editando e criando variáveis GET

O processo de identificar as variáveis transforma a URL, que é uma string, em variáveis Javascript. Sendo variáveis Javascript podemos fazer qualquer coisa com essas variáveis. O acesso a variavél é feito pelo método URL.get e o seu valor modificado pelo método URL.set.

// www.jarbs.com.br/?pais=EUA&uf=NY

// identifica as variáveis GET
URL.parse();

URL.set('pais', 'Brasil');
// pais=Brasil&uf=NY

URL.set('uf', 'sp');
// pais=Brasil&uf=sp

URL.set('uf', 'rj');
// pais=Brasil&uf=rj

Se você tentar modificar uma variável que não existe ela será automaticamente criada. Logo mais veremos por que criar variáveis GET, quando tudo que nós interessa de primeira vista é acessar seus valores.

// cria uma nova variável GET
URL.set('lg', 'pt');
// pais=Brasil&uf=rj&lg=pt

Refazendo

De nada serve modificar ou criar variáveis se não vamos transforma-las de volta em URL.

O método URL.go transforma as variáveis Javascript que foram identificadas, modificadas e ou criadas de volta em URL e redireciona para essa URL.

// www.jarbs.com.br/?post=300&lg=pt

// identifica as variáveis
URL.parse();

// substituí o valor da variável lg
URL.set('lg', 'en');

// cria uma nova variável
URL.set('cache', 'false');

// redireciona para a nova URL
URL.go();

// podemos também usar essas variáveis em uma outra página
URL.go('index2.html');

Código fonte

Código fonte explicado

var URL = {
	// array de variáveis get
	vars: [],

	// acessa uma variável
	get: function(nam) {
		// retorna o valor da variável se existir
		// ou falso
		return this.vars[nam] || false;
	},

	// cria ou modifica uma variável
	set: function(nam, val) {
		this.vars[nam] = val;
	},

	// identifica as variáveis de uma URL
	parse: function(url) {
		// a expressão regular procura por possíveis variáveis
		// que estiverem entre ? e #
		// pode ser em uma URL ou da URL da página atual
		if (vars = /\?([^#]+)/.exec(url || window.location.href)) {
			// caso encontre, as variáveis são separadas nos pares
			// variável = valor
			var e = vars[1].split('&');

			// o laço percorre todas as variáveis encontradas
			for (var i=0; i < e.length; i++) {
				// nome e valor são separados
				var a = e[i].split('=');
				// e incluídos no array de variáveis
				this.vars[a[0]] = a[1];
			}
		}
	},

	// une as variáveis javascript transformando no padrão de URL
	// e redireciona para a URL
	go: function(url) {
		var a = [];
		// URL passada por parâmetro ou a URL atual
		url = url || window.location.href.split('?')[0];

		// se existir variáveis
		if (this.vars) {
			// percorre as variáveis, gerando combinações de nome=valor
			for (k in this.vars)
				// cada conjunto nome=valor é inserido em um array
				a.push(k +'='+ this.vars[k]);

			// o array é convertido para string
			url += '?' + a.join('&');
		}

		// faz o redirecionamento
		window.location.href = url;
	}
}

Código fonte

var URL = {
	vars: [],

	get: function(nam) {
		return this.vars[nam] || false;
	},

	set: function(nam, val) {
		this.vars[nam] = val;
	},

	parse: function(url) {
		if (vars = /\?([^#]+)/.exec(url || window.location.href)) {
			var e = vars[1].split('&');

			for (var i=0; i < e.length; i++) {
				var a = e[i].split('=');
				this.vars[a[0]] = a[1];
			}
		}
	},

	go: function(url) {
		var a = [];
		url = url || window.location.href.split('?')[0];

		if (this.vars) {
			for (k in this.vars)
				a.push(k +'='+ this.vars[k]);

			url += '?' + a.join('&');
		}

		window.location.href = url;
	}
}

Leave a Comment

Sobre o autor

Alejandro Moraga é um cientista da computação. Atualmente é o Webmaster da FAPESP. Já foi o desenvolvedor de sistemas ERP e CRM na Internetmídia. Moraga também desenvolve frameworks, ferramentas, sistemas e sites em nome da empresa METS no qual é sócio junto com sua esposa, e é um pesquisador da Inteligência Artificial.

Mais artigos

Validar números de agências e contas correntes do Banco do Brasil
Validar números de agências e contas correntes do Banco do Brasil

Outro dia precisei validar números de agências e contas do Banco do Brasil. Para quem precisar segue as [Leia mais]

Como usar nodeName e outras propriedades e métodos DOM em jQuery?
Como usar nodeName e outras propriedades e métodos DOM em jQuery?

Acredito que essa é uma dúvida um tanto comum. Não há uma combinação de propriedades e métodos DOM com [Leia mais]

Selecionando elementos de arrays Javascript
Selecionando elementos de arrays Javascript

Gets retorna os elementos selecionado de um array a partir de um elemento e da quantidade requerida. Diferente do [Leia mais]

Galerias – slide de imagens em Javascript
Galerias – slide de imagens em Javascript

Photoslide é um código feito em Javascript para gerar slides simples de imagens. Customizável, fácil de usar, [Leia mais]