O que não pode ser ignorado no casamento de Javascript com PHP é que os dois estão rodando em extremos diferentes. Os scripts de Javascript com suas variáveis estão no browser, carregados juntamente com o HTML, e os scripts PHP terão executado suas tarefas do outro lado da WEB, lá no servidor. A unica via de comunicação entre eles são os textos (html, javascript…) que transitam no protocolo HTTP. Isto um paradoxo, uma vez que você encontrará PHP, HTML e Javascript no mesmo arquivo index.php (por exemplo). Porém, como dito anteriormente, cada um, PHP e Javascript atua em um ambiente diferente.Vamos começar com a prática! … ou melhor…. um pouco mais de teoria:
Bom… não é possível fazer um <? echo… ?> dentro de um arquivo “.js”, porque isto só funciona dentro de um arquivo .php. Mas é perfeitamente possível um <? echo… ?> dentro de um arquivo “.php” da página (index.php por exemplo…) . Levemos em consideração que esta página também irá carregar arquivos “.js”. Aproveitando se desta aparente reunião, basta criar variáveis (javascript) globais, as quais podem ser denominadas “variáveis de ambiente”. Pois irão permitir o trânsito de informações do ambiente HTML+PHP para o âmbito do Javascript. Bla bla bla bla… esclarecimentos práticos por favor:
<script>
//para não criar muitas variáveis dispersas, é interessante criar um array de variáveis
var VARS_AMBIENTE = new Array();
//em nosso exemplo vamos preencher a variável de ambiente “caminho_servidor”
// a qual terá seu conteúdo fornecido por um echo PHP
VARS_AMBIENTE['caminho_servidor'] = <? echo $caminho_server; ?>;
</script>
É importante ter em mente que quando a página HTML + PHP for carregada no browser, o código acima será visto como:
<script>
var VARS_AMBIENTE = new Array();
VARS_AMBIENTE['caminho_servidor'] = “algum valor fornecido pelo echo do PHP lá no servidor…”;
</script>
Pois o PHP já terá feito seu trabalho no servidor quando a página for carregada no browser. E então o código do script que estiver no meio do HTML virá do servidor com a variável previamente preenchida.
Continuando a página index.php… agora basta carregar o script que deve ter alguma referência a VARS_AMBIENTE['caminho_servidor'] para receber o valor contido nesta variável:
<script src=“meuscript.js”></script>
Pronto! Qualquer código contido dentro de meuscript.js que faça referência a VARS_AMBIENTE['caminho_servidor'] terá acesso ao camino do servidor.
E o caminho inverso?
Já do javascript para o PHP, como cada um estará sendo interpretado em uma ponta diferente da web (Javascript – cliente / PHP – servidor), a única forma de enviar dados continua sendo através de tráfego pela rede. Nesta hora uma tag “mágica” pode ajudar:
<form …>
<input type=“hidden” id=“dados” name=“dados_enviar” value=“” />
</form>
<!– Observe que na tag input acima o atributo value foi deixado em branco. Naturalmente se nenhum dado for setado para este atributo, nenhuma informação será recebido no servidor ao executar submit deste formulário.–>
<script>
//aqui a input hidden de id=”dados” recebe um valor dinâmicamente
//via código Javascript:
//cria um objeto de referência à tag input hidden
var objetoDados = document.getElementById(“dados”);
//altera o atributo value desta tag
objetoDados.value = “dados que vão para o servidor”;
</script>
No momento em que estes dados forem “submitados”, poderão ser adquiridos no servidor através de um script PHP que os capture via post por exemplo:
<?
echo $_POST[ 'dados_enviar'];
?>
É isto!
Veja também:
Passar array de PHP para Javascript, e de Javascript para PHP
Tags: passar valor, passar valores, PHP, variáveis Javascript, variáveis PHP
Segunda-feira, 14/04/2008 às 11:07 am |
esse post seu aqui salvou a minha alma eu tava batendo cabeça de como passar valores de java script para php valeu mesmo
agora vou deixar um problema para ver se tu pode me ajudar
como eu faço para dar um auto submit em um formulrio de contato
apos x minutos ?
um abraço kakaroto
Terça-feira, 12/08/2008 às 2:53 pm |
Excelente help. Estou a dias procurando uma forma de retornar dados de uma função javascript para o php. Agora, esta super claro.
Obrigado.
Segunda-feira, 18/08/2008 às 4:02 pm |
olá tudo bem?
só uma pequena observação
usar
var objetoDados = document.getElementById(“dados”);
//altera o atributo value desta tag
objetoDados.value = “dados que vão para o servidor”;
não vai funcionar
pode se usasr
document.getElementById(“dados”).value = “dados que vão para o servidor”
qualquer coisa tamos ae =p
Terça-feira, 19/08/2008 às 10:34 am |
Muito boa dica!
Parabéns.
Terça-feira, 19/08/2008 às 9:06 pm |
Olá raphael, agradeço pelo comentário.
Quanto ao modo de atribuir os valores, as duas configurações devem
funcionar, tanto a que apresentei no artigo quanto a que vc relatou no
comentário. Claro a sua é mais direta, porém no artigo eu quis aproveitar a deixa para evidenciar que um objeto pode ser inteiramente lançado dentro de uma variável. Ou melhor, a variável [objetoDados] conterá uma referência ao objeto, que no caso do artigo era uma tag input. E quem obtém esta referência é o método getElementById.
var objetoDados = document.getElementById(“dados”);
//O funcionamento fica mais evidente se vc testar com uma tag div
//e alterar o conteúdo de texto dela, através da propriedade
//innerHTML do objeto. Ex:
objetoDados.innerHTML = “Oeeeiii testando 123…”;
Grande abraço
Terça-feira, 07/10/2008 às 11:08 am |
bem, isso funciona muito bem. agora eu gostaria de saber como faço quando tenho um array no js. Olha criei um array global onde vou atribuindo valores no js. como faço para pegá-lo com php.?
Sábado, 29/11/2008 às 3:19 pm |
[...] Como passar valores do PHP para o Javascript e vice versa? [...]