Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alex_DTP

[Resolvido] Pegar variável de PHP em javascript

Recommended Posts

Pessoal,

 

Tô quebrando a cabeça e não consegui encontrar nada esclarecedor

 

Tenho um link em pagina.php

<a href="mapa.html?lat=<?php echo $row_rsCoordenadas['latitude']; & long=<?php echo $row_rsCoordenadas['longitude'];?>" onclick="MM_openBrWindow('mapa.html','gmap','width=760,height=500')" />Mapa</a>

e um javascript em mapa.html

. . .
	function load() {
	  if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("map"));
	   var center = new GLatLng( AQUI O VALOR LAT, AQUI O VALOR LONG );
	. . .

Como pegar o valor 'lat' e 'long' passados pela página em php ?

 

Valeu por enquanto.

 

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

exemplo:

 

var long='<?php echo $_GET['long'];?>';

 

 

abraço

Amigo,

 

Não entendi, aonde eu uso esta expressão?

 

Valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

function load() {

if (GBrowserIsCompatible()) {

var map = new GMap2(document.getElementById("map"));

var center = new GLatLng(<?php echo $_GET['lat'];?>, <?php echo $_GET['long'];?> );

Compartilhar este post


Link para o post
Compartilhar em outros sites

function load() {
if (GBrowserIsCompatible()) {
var map = new GMap2(document.getElementById("map"));
var center = new GLatLng(<?php echo $_GET['lat'];?>, <?php echo $_GET['long'];?> );
Não funcionou.

 

A página onde o código js está é html. Será que por isso não aceita php GET?

Compartilhar este post


Link para o post
Compartilhar em outros sites

a página mapa.html não teria q ser mapa.php?

para poder pegar os valores vindo por POST senão não tem como

 

se entendi certo acho q seria isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido: PHP=>Javascript

 

Você não quer pergar a variável do "PHP", e sim o valor que é passado para o arquivo mapa.html pela URL, através do uso de Javascript.

 

Se você exibir o HTML gerado vai ser mais fácil o pessoal entender o que você quer, do que você passar código PHP que não fazem parte do contexto do problema, pois foi usado apenas pra gerar a saída que é enviada ao browser.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Movido: PHP=>Javascript

 

Você não quer pergar a variável do "PHP", e sim o valor que é passado para o arquivo mapa.html pela URL, através do uso de Javascript.

 

Se você exibir o HTML gerado vai ser mais fácil o pessoal entender o que você quer, do que você passar código PHP que não fazem parte do contexto do problema, pois foi usado apenas pra gerar a saída que é enviada ao browser.

É isso mesmo. Queor passar o valor para o html

 

Segue o código do mapa.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<title>Untitle</title>
	<script src="http://maps.google.com/maps?file=api&v=2&key=XXXX"
	  type="text/javascript"></script>

	<script type="text/javascript">

	//<![CDATA[

	function load() {
	  if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("map"));

	   var center = new GLatLng(AQUI O VALOR LAT, AQUI O VALOR LONG );

		map.setCenter(center, 17);
		map.setMapType(G_HYBRID_MAP);

		var marker = new GMarker(center, {draggable: true});
		GEvent.addListener(marker, "dragstart", function() {
		  map.closeInfoWindow();
		  });
		GEvent.addListener(marker, "dragend", function() {
		  marker.openInfoWindowHtml("Desenvolvendo");
		  });
		map.addOverlay(marker);

		 map.addControl(new GLargeMapControl());
		 map.addControl(new GMapTypeControl());
		 map.addControl(new GOverviewMapControl());;
	  }
	}

	//]]>
	</script>
<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
-->
</style></head>
  <body onload="load()" onunload="GUnload()">
	<div id="map" style="width: 760px; height: 500px"></div>
  </body>
</html>

Uma observação. Estou enviando os valores de uma página php de dentro de uma intranet para uma pg html hospedada num provedor fora. Não posso usar o script do mapa na própria pg php, o que funcionaria perfeitamente pois o Google Maps não aceita de uma intranet. Não autentica.

Também não posso usar o script numa página php pois o servidor onde está hospedada não aceita php.

 

Acredito que não seja algo tão complicado passar estes valores e aguardo aqui uma luz do pessoal do forum.

 

Valeu,

 

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim amigo

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Intranet Preservação</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=XXXX" type="text/javascript"></script>

<script type="text/javascript">

//<![CDATA[

function load() {
if (GBrowserIsCompatible()) {
var map  = new GMap2(document.getElementById("map"));
//*pegando os valores */
var lat  = document.getElementById("lat");
var long = document.getElementById("long");

var center = new GLatLng(lat, long);

map.setCenter(center, 17);
map.setMapType(G_HYBRID_MAP);

var marker = new GMarker(center, {draggable: true});
GEvent.addListener(marker, "dragstart", function() {
map.closeInfoWindow();
});
GEvent.addListener(marker, "dragend", function() {
marker.openInfoWindowHtml("Desenvolvendo");
});
map.addOverlay(marker);

map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.addControl(new GOverviewMapControl());;
}
}

//]]>
</script>
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style></head>
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 760px; height: 500px"></div>
<input type="hidden" id="lat" value="<?=$_GET['lat']; ?>" />
<input type="hidden" id="long" value="<?=$_GET['long']; ?>" />
</body>
</html>

Da uma olhadinha no codigo e vê se funfa.

 

 

 

Abssssssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sou muito bom com Javascript, e uma vez tive um problema muito parecido com o seu.

Resolvi ele criando uma classe para capturar estes valores que vem pela URL, veja:

 

/**
 * Obtenção das variáveis GET
 */
function QS()
{
	/**
	 * Obtém o valor da variável, retorna false caso não exista
	 */
	this.getQueryString = function(nome_variavel)
	{
		var location = new String(window.location);
		var query_string = location.split('?')[1];
		if (nome_variavel)
		{
			if (query_string)
			{
				var retorno = new Array();
				var variaveis = query_string.split('&');
				for (i=0; i<variaveis.length; i++)
				{
					var chave = new String(variaveis[i].split('=')[0]);
					if (chave == nome_variavel)
					{
						return variaveis[i].split('=')[1];
					}
				}
				return false;
			}
			else
			{
				return false;
			}
		}
		else
		{
			return false;
		}
	}
}

E um exemplo de utilização:

// estaria em uma página com a url assim: ?exibir=testando
var qs = new QS;
var item_exibir = qs.getQueryString('exibir');
alert(item_exibir);

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente assim amigo

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Untitle</title>
<script src="http://maps.google.com/maps?file=api&v=2&key=XXXX" type="text/javascript"></script>

<script type="text/javascript">

//<![CDATA[

function load() {
if (GBrowserIsCompatible()) {
var map  = new GMap2(document.getElementById("map"));
//*pegando os valores */
var lat  = document.getElementById("lat");
var long = document.getElementById("long");

var center = new GLatLng(lat, long);

map.setCenter(center, 17);
map.setMapType(G_HYBRID_MAP);

var marker = new GMarker(center, {draggable: true});
GEvent.addListener(marker, "dragstart", function() {
map.closeInfoWindow();
});
GEvent.addListener(marker, "dragend", function() {
marker.openInfoWindowHtml("Desenvolvendo");
});
map.addOverlay(marker);

map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
map.addControl(new GOverviewMapControl());;
}
}

//]]>
</script>
<style type="text/css">
<!--
body {
margin-left: 0px;
margin-top: 0px;
margin-right: 0px;
margin-bottom: 0px;
}
-->
</style></head>
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 760px; height: 500px"></div>
<input type="hidden" id="lat" value="<?=$_GET['lat']; ?>" />
<input type="hidden" id="long" value="<?=$_GET['long']; ?>" />
</body>
</html>

Da uma olhadinha no codigo e vê se funfa.

 

 

 

Abssssssss

Agora ele até mostra a div com as ferramentas de navegação do mapa mas com a informação de que não tem para esta região. Pode ser um problema no valor. Como faço para imprimir o valor que ele está pegando?

Obs.: O valor que estou enviando está correto pois quando insiro diretamente ele funciona

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui você pode dar um alert nesse lugar aee aonde pus no codigo.

então ele vai mostar o valor q ele está pegando do HTML antes de inserir na sua função.

 

var map  = new GMap2(document.getElementById("map"));
//*pegando os valores */
var lat  = document.getElementById("lat");
var long = document.getElementById("long");

alert(lat)
alert(long)

Faz um teste aee e qualquer coisa so postar.

 

 

Obs.:

A função que o Marcio Leandro postou eh bem interessante, eh uma outra alternativa bem interessante de fazer isso q eu fiz no seu código, assim você não precisaria criar um batalhão de campos hidden para recuperar valores em caso de grande quantidade de variáveis.

 

A função dele pega a url e desmembra ela separando as variáveis existentes. vale a pena dar uma conferida.

 

Absss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sou muito bom com Javascript, e uma vez tive um problema muito parecido com o seu.

Resolvi ele criando uma classe para capturar estes valores que vem pela URL, veja:

 

/**
 * Obtenção das variáveis GET
 */
function QS()
{
	/**
	 * Obtém o valor da variável, retorna false caso não exista
	 */
	this.getQueryString = function(nome_variavel)
	{
		var location = new String(window.location);
		var query_string = location.split('?')[1];
		if (nome_variavel)
		{
			if (query_string)
			{
				var retorno = new Array();
				var variaveis = query_string.split('&');
				for (i=0; i<variaveis.length; i++)
				{
					var chave = new String(variaveis[i].split('=')[0]);
					if (chave == nome_variavel)
					{
						return variaveis[i].split('=')[1];
					}
				}
				return false;
			}
			else
			{
				return false;
			}
		}
		else
		{
			return false;
		}
	}
}

E um exemplo de utilização:

// estaria em uma página com a url assim: ?exibir=testando
var qs = new QS;
var item_exibir = qs.getQueryString('exibir');
alert(item_exibir);
Mais uma ajudinha aí, Marcio

 

Coloco a função na mesma página do javascript, certo?

 

E o alert coloco aonde no código?

function load() {
	  if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("map"));

	var center = new GLatLng(maplat, maplong); //AQUI É ONDE TEM QUE RECEBER O VALOR

		map.setCenter(center, 13);
		map.setMapType(G_HYBRID_MAP);
Coloco onde recebe o valor?

 

Valeu,

 

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui você pode dar um alert nesse lugar aee aonde pus no codigo.

então ele vai mostar o valor q ele está pegando do HTML antes de inserir na sua função.

 

var map  = new GMap2(document.getElementById("map"));
//*pegando os valores */
var lat  = document.getElementById("lat");
var long = document.getElementById("long");

alert(lat)
alert(long)

Faz um teste aee e qualquer coisa so postar.

 

 

Obs.:

A função que o Marcio Leandro postou eh bem interessante, eh uma outra alternativa bem interessante de fazer isso q eu fiz no seu código, assim você não precisaria criar um batalhão de campos hidden para recuperar valores em caso de grande quantidade de variáveis.

 

A função dele pega a url e desmembra ela separando as variáveis existentes. vale a pena dar uma conferida.

 

Absss

Tá retornando [object] ??? no alert. Será que não tá recebendo os valores?

 

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só colcoar nos scripts. Acabei de testar o script que te mandei e funcionou normalmente aqui, você deve estar fazendo alguma coisa errada.

Posta como você tentou usar a classe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

É só colcoar nos scripts. Acabei de testar o script que te mandei e funcionou normalmente aqui, você deve estar fazendo alguma coisa errada.

Posta como você tentou usar a classe.

V A L E U, M A R C I O !!!!!!

 

B E L E Z A !!!

 

Cara, tô desde ontem de manhã, passei quase a madrugada revirando os foruns mas nada funcionava.

 

Muito bom!!!

 

Deixo aqui o meu script com sua solução:

E tô enviando assim pela pagina.php

<a href="http://site.com.br/teste_gmap_1.html?
maplat=<?php echo substr( $row_rsCoord['LATITUDE'], 0, 3 ); echo '.' . substr( $row_rsCoord['LATITUDE'], 3, 10 );?>&
maplong=<?php echo substr( $row_rsCoord['LONGITUDE'], 0, 3 ); echo '.' . substr( $row_rsCoord['LONGITUDE'], 3, 10 );?>" />Mapa</a> //Substr só sei fazer assim, mas funciona
Link: http://.../teste_gmap_1.html?maplat=-23.514046&maplong=-46629127

e no js tem que receber assim (-23.514046, -46.629127)

 

teste_gmap_1.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
	<title>Untitle</title>
	<script src="http://maps.google.com/maps?file=api&v=2&key=xxxxxx"
	  type="text/javascript"></script>

	<script type="text/javascript">
/**
* Obtenção das variáveis GET
*/
function QS()
{
	/**
	 * Obtém o valor da variável, retorna false caso não exista
	 */
	this.getQueryString = function(nome_variavel)
	{
		var location = new String(window.location);
		var query_string = location.split('?')[1];
		if (nome_variavel)
		{
			if (query_string)
			{
				var retorno = new Array();
				var variaveis = query_string.split('&');
				for (i=0; i<variaveis.length; i++)
				{
					var chave = new String(variaveis[i].split('=')[0]);
					if (chave == nome_variavel)
					{
						return variaveis[i].split('=')[1];
					}
				}
				return false;
			}
			else
			{
				return false;
			}
		}
		else
		{
			return false;
		}
	}
}
	//<![CDATA[

	function load() {
	  if (GBrowserIsCompatible()) {
		var map = new GMap2(document.getElementById("map"));

			var qs = new QS;
			var maplat = qs.getQueryString('maplat');
			var maplong = qs.getQueryString('maplong');
				alert(maplat);
				alert(maplong);
				
	   var center = new GLatLng(maplat, maplong); // AQUI TEM QUE MOSTRAR OS VALORES

		map.setCenter(center, 13);
		map.setMapType(G_HYBRID_MAP);

		var marker = new GMarker(center, {draggable: true});
		GEvent.addListener(marker, "dragstart", function() {
		  map.closeInfoWindow();
		  });
		GEvent.addListener(marker, "dragend", function() {
		  marker.openInfoWindowHtml("Desenvolvendo");
		  });
		map.addOverlay(marker);

		 map.addControl(new GLargeMapControl());
		 map.addControl(new GMapTypeControl());
		 map.addControl(new GOverviewMapControl());;
	  }
	}

	//]]>
	</script>
<style type="text/css">
<!--
body {
	margin-left: 0px;
	margin-top: 0px;
	margin-right: 0px;
	margin-bottom: 0px;
}
-->
</style></head>
  <body onload="load()" onunload="GUnload()">
	<div id="map" style="width: 760px; height: 500px"> </div>
  </body>
</html>

 

Valeu mais uma vez,

 

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

Show de bola :D, a função dele eh bem interessante, eu copiei ela pra mim pq nunca usei dessa forma.

 

Q bom q funfou. porém corrigindo o problema do object quando você usou o meu script

 

var map  = new GMap2(document.getElementById("map"));
//*pegando os valores , eu me esqueci de por o ".value" por isso não funcionou.*/
var lat  = document.getElementById("lat").value;
var long = document.getElementById("long").value;

 

abssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Show de bola :D, a função dele eh bem interessante, eu copiei ela pra mim pq nunca usei dessa forma.

 

Q bom q funfou. porém corrigindo o problema do object quando você usou o meu script

 

var map  = new GMap2(document.getElementById("map"));
//*pegando os valores , eu me esqueci de por o ".value" por isso não funcionou.*/
var lat  = document.getElementById("lat").value;
var long = document.getElementById("long").value;

 

abssss

Beleza,

 

Vou testar depois, agora vou botar isso pra funcionar.

 

Valeu

 

Alex

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, mais uma coisinha,

 

Quero passar mais uma variável só que para exibir no html.

 

Como eu exibo?

 

Ex.:

 

<a href="http://site.com.br/teste_gmap_1.html?
maplat=<?php echo substr( $row_rsCoord['LATITUDE'], 0, 3 ); echo '.' . substr( $row_rsCoord['LATITUDE'], 3, 10 );?>&
maplong=<?php echo substr( $row_rsCoord['LONGITUDE'], 0, 3 ); echo '.' . substr( $row_rsCoord['LONGITUDE'], 3, 10 );?>&
local=<?php echo $row_rsCoord['local']);?>" />Mapa</a>

Valeu de novo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa eu perguntar, mas pra mim não ficou claro se você resolveu a questão. Resolveu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.