Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
tenho uma funcao em js que está me dando erro:
>
Citar
<?php
$usuario = 1;
?>
<p> <a href='#' onclick='executar($usuario);'>verificar</a></p>
quando executo a funcao js, ao clicar no link, dá erro de variavel $usuario indefinida...
>
Citar
function executar(x){
var req = CriaRequest();
alert(x);
}
se eu colocar um valor qualquer então a funcao funciona, mas se colocar o nome da variavel da problema.
Uma outra função identica a esta, funciona normalmente, só que o valor da variavel passada é buscada do banco de dados...
não sei o porque que funciona aqui, e na outra que é a mesma coisa (a unica diferenca é que o valor da variavel nao vem do bd) não funciona.Tadeu Barbosa, sua resposta corrigiu o problema em parte. De fato faltava colocar mesmo o "<?php echo...?>", é que num outro link que fiz não foi necessário colocar o echo, pois eu ja o havia feito antes, no inicio do link, algo assim:
>
Citar
<?php echo "<a href=...etc";?>
mas mesmo assim, está dando erro de variável idefinida.
O que ocorre é que esta variável é uma variável de sessão que o javascript não está enxergando e não sei por qual motivo.
Na pagina inicial eu iniciei a sessão:
>
Citar
<?php
session_start();
$_SESSION["usuario"] = "";
?>
então o usuario faz um login e a variável de sessão está tudo ok até o momento.
Então apos realizar o login, existe na barra de ferramenta um outro link para ele poder navegar no site.
Esta barra de ferramenta está na propria pagina inicial onde iniciei a sessão. só que ao clicar neste link é que o javascript não está enxergando esta variavel.
veja o codigo, aqui inicio da variavel de sessão, é nesta pagina onde também tem a barra de ferramenta com os links.
>
Citar
<?php
session_start();
$_SESSION["usuario"] = "";
?>
aqui o link que consta na barra de ferramenta:
>
Citar
<p> <a href='#' onclick='meus_jogos(<?php echo $_SESSION['usuario'];?>);'>Meus jogos - conferir resultados</a></p>Ah sim! Entendi errado...
Nesta linha você está inserindo os dados corretamente?
meus_jogos(<?php echo $_SESSION['usuario'];?>)
Creio que deveria ter uma aspa ali, não? Ou o valor da *$_SESSION* é um *int*?
No console do seu navegador aparece alguma mensagem? Confere pra gente.bem, fiz alguns testes, e não encontrei erro de logica na programação.
Os testes que fiz foi o seguinte:
logo na pagina inicial, onde contem a barra de navegacao com seus links, iniciei a sessão e atribui um valor a variável, no caso o valor 11 (apenas para testar mesmo), assim:
>
Citar
<?php
session_start();
$_SESSION["usuario"] = "11";
?>
em seguida, quando clico no link:
>
Citar
meus_jogos(<?php echo $_SESSION['usuario'];?>)
funciona corretamente, ao executar a funcao meus jogos, a caixa de alert mostra o valor 11 corretamente.
Esta função irá invocar uma outra pagina php, que irá buscar no banco de dados o valor correto deste usuário, vamos supor que seja 15.
O valor é encontrado corretamente (15), só que depois ao clicar no link em questão, continua considerando o valor 11.
Portanto a variável de sessão não está interagindo nas páginas.
Até coloquei o session_start(); na segunda pagina também (embora não seja o correto), mas não adiantou nada.
estou achando que estas variáveis de sessão não se entendem muito bem com o ajax não...Qual o retorno no seu HTML? Ele imprime o 11 (meus_jogos(11))?
Abra o código fonte da página (CTRL+U ou CTRL+SHIFT+I) e verifica o que ele exibe.
retorna 11 sim:
>
Citar
<p> <a href='#' onclick='meus_jogos(11);'>Meus jogos - conferir resultados</a></p>
vou colocar um trecho do codigo aqui para ficar mais claro:
na pagina inicial tenho a inicialização da variável de sessão::
>
Citar
<?phpsession_start(); $_SESSION["usuario"] = "11";?>
na página inicial existe na barra de ferramentas, onde o usuário clica para se cadastrar ou logar.
>
Citar
<div id="login" class="login">
<form id="form1" onsubmit="return enviar();">
usuário - <input size="5" id = "usuario" value="">
senha - <input size="5" id = "senha" value="" type="password">
<input name="cadas" id= "cadas" value="cadastrar ou logar" type="submit">
</form>
</div>
a função "enviar" recupera os dados do formulário e executa a página responsável para acessar o banco de dados e verificar se é usuario novo ou não, e me retorna o número id do usuário, o qual é exibido corretamente na div abaixo "resul_login".
>
Citar
<div id="resul_login" class="resul_login"></div>
<div id="menu_cadastro" class="menu">Cadastrar ou logar</div>
agora note que existe uma outra div pertecente ainda a barra de ferramenta, onde o usuário ao clicar irá acessar outras áreas, mas deverá estar logado. Por isso é que a variável usuário deve conter o id do usuário. Mas está retornando 11..., conforme foi declarado no inicio quando inicializei a variável de sessão. O 11 é apenas para exemplo, na realidade esta variavel inicia com nulos. Então se retiro o 11 da variável, ela me retorna indefined...
>
Citar
<div id="menu_lotofacil" class="menu"style="left:235px; width:180px;"><div id="grps">LOTOFACIL</div>
<div id="links" class="links">
<p> Inserir jogos</p>
<p> <a href='#' onclick='meus_jogos(<?php echo $_SESSION['usuario'];?>);'>Meus jogos - conferir resultados</a></p>
</div>
</div>
mas se a variável de sessão não funcionar, estou pensando numa outra saída.
Note que o valor da variável usuário é exibido corretamente na div resul_login, porque é nesta div que é exibido o resultado do login, e não na div menu_lotofacil ou na div links...
Será que na função tem como especificar para exibir o resultado em duas divs??
Aí resolve o problema, e nem preciso da variável de sessão...
Amigo, boa tarde.
Você está misturando PHP no seu HTML ali em:
ou