Ir para conteúdo

POWERED BY:

Arquivado

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

Víctor Luiz

Passar variável do javascript para php

Recommended Posts

Boa tarde,

 

Estou com um problema em um código onde eu manipulo alguns valores em javascript, mas ao sair da página eu passarei para uma página php, onde eu precisaria utilizar o valor desta variável.

 

Li alguns artigos, mas todos falavam para eu utilizar uma variável php para receber o código do javascript, por exemplo:

 

$resolucao = "
<script>
document.write(screen.width+'x'+screen.height);
</script>";

Mas com isso eu não utilizo o valor da variável, e sim o código javascript.

 

Teria como transferir esta variável para o php, ou mesmo criar um form invisível através do javascript para receber o valor desta variável?

 

Obrigado à todos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem sim, de diversas maneiras. Uma bem simples que acaba de me ocorrer é a seguinte.

 

Crie um campo hidden no seu formulário para armazenar o valor desta variável.

 

Pelo javascript, utilize aquela famosa instrução, sobre a qual já falei anteriormente, getElementById, para pegar este campo.

 

Sete o valor desse campo com a propriedade .value para receber o valor daquela variável do javascript.

 

Depois, receba normalmente esta variável vinda do formulário via $_POST, por exemplo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem sim, de diversas maneiras. Uma bem simples que acaba de me ocorrer é a seguinte.

 

Crie um campo hidden no seu formulário para armazenar o valor desta variável.

 

Pelo javascript, utilize aquela famosa instrução, sobre a qual já falei anteriormente, getElementById, para pegar este campo.

 

Sete o valor desse campo com a propriedade .value para receber o valor daquela variável do javascript.

 

Depois, receba normalmente esta variável vinda do formulário via $_POST, por exemplo.

 

Beleza, essa é uma maneira.

 

Mas eu não estou utilizando nenhum formulário na minha página, devo criar um formulário apenas para passar este valor?

 

muito obrigado. Um abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faça o seguinte, então:

 

No javascript:

 

var x = 'valor';

E no php:

 

$x = "<script>document.write(x)</script>";

Beleza.

 

Mas, se eu for inserir este valor no banco de dados por exemplo, ele vai receber o valor da variável do javascript, ou o código javascript?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, se pensarmos claramente, vamos chegar a um ponto:

 

O javascript é processado depois do PHP. Nesse sentido, não haveria maneira de transportar essa variável, a não ser que houvesse uma página que renderizasse essa variável e colocasse-a no PHP.

 

Creio que terás que utilizar o campo hidden mesmo.

 

@edit:

 

Na verdade, pensando melhor, vai funcionar sim. Se você estiver trabalhando com uma página HTML que contém código PHP, vai funcionar. Dessa maneira, a variável em javascript será renderizada antes do PHP, e este vai saber onde buscá-la.

 

Do contrário, em um PHP puro, não teria maneira sem o campo hidden vindo de um formulário, creio eu.

Compartilhar este post


Link para o post
Compartilhar em outros sites

@edit:

 

Na verdade, pensando melhor, vai funcionar sim. Se você estiver trabalhando com uma página HTML que contém código PHP, vai funcionar. Dessa maneira, a variável em javascript será renderizada antes do PHP, e este vai saber onde buscá-la.

 

Do contrário, em um PHP puro, não teria maneira sem o campo hidden vindo de um formulário, creio eu.

 

Ai cara, valeu pela força.

Infelizmente, agora terei que ir para a minha aula, e só poderei testar amanhã.

 

Mas assim que tiver a resposta se funcionou, ou não, posto aqui.

 

Muito obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acredito que dê pra fazer sim, utilizando o session_register.

 

Dessa maneira, você registra a variável desejada como sendo global e o php interpretará da maneira correta pela sessão.

 

O único problema é utilizar uma variável global, ato que eu não recomendo. Sugiro que tente dessa forma também.

 

Pesquise sobre session_register() e $_SESSION.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para tarefas finâmicas não funcionará, porém, em situações simples obtemos o resultado correto. Esse código foi testado no IE e Firefox

 

---------- ASSIM FUNCIONA

<?php

$horizontal="<script type=\"text/javascript\">" . "document.write(screen.width);" . "</script>";

$vertical="<script type=\"text/javascript\">" . "document.write(screen.height);" . "</script>";

printf($horizontal . "x" . $vertical);

?>

 

---------- ASSIM NÃO FUNCIONA

 

<?php

$horizontal="<script type=\"text/javascript\">" . "document.write(screen.width);" . "</script>";

$vertical="<script type=\"text/javascript\">" . "document.write(screen.height);" . "</script>";

?>

 

printf("<table border=\"1\" align=\"center\" bgcolor=\"#FFDAB9\" CELLSPACING=\"8\" WIDTH=\"" . $horizontal . "\">");

 

Problema: quando exibo o código-fonte pelo browser vejo o seguinte:

 

<table border="1" align="center" bgcolor="#FFDAB9" CELLSPACING="8" WIDTH="<script type="text/javascript">document.write(screen.width);</script>">

 

Não gera o valor numérico em WIDTH, o que echo retorna é a string do javascript.

 

---------- ULTIMA TENTATIVA ERRO

 

<table border="1" align="center" bgcolor="#FFDAB9" CELLSPACING="8" WIDTH="<?php echo $horizontal ?>">

 

Problema: quando exibo o código-fonte pelo browser vejo o seguinte:

 

<table border="1" align="center" bgcolor="#FFDAB9" CELLSPACING="8" WIDTH="<script type="text/javascript">document.write(screen.width);</script>">

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.