Jump to content
newzenk

PEGAR VALOR DO JavaScript E PASSAR PARA O PHP

Recommended Posts

Boa noite, estou tendo dificuldade para passar o valor da variavel cep do javascript para o php, onde irá ser trocado pelo valor do cep (01001000)

 

Código;

 

<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://viacep.com.br/ws/01001000/json'); //trocar o valor 01001000 pela variavel do cep
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FILETIME, true);
$end = curl_exec($ch);
$json = $end;
$obj = json_decode($json);
$txtcep_endereço = $obj->{'logradouro'};
$txtcep_bairro = $obj->{'bairro'};
$txtcep_cidade = $obj->{'localidade'};
$txtcep_estado = $obj->{'uf'};
curl_close($ch);


?>

<html><head>
  <title>Passar Variável PHP para Javascript</title></head><body>

  <script type="text/javascript">

function consultar(){

  <?php
  $msg = "Seja bem vindo ao site!";
  $variavelphp = "<script>document.write(w)</script>";?>
  var cep = document.getElementById('txt_cep').value

   var mensagem1 = "<?php echo $txtcep_endereço;?>";
   var mensagem2 = "<?php echo $txtcep_bairro;?>";
   var mensagem3 = "<?php echo $txtcep_cidade;?>";
   var mensagem4 = "<?php echo $txtcep_estado;?>";



document.getElementById('txt_endereço').value = mensagem1;
document.getElementById('txt_bairro').value = mensagem2;
document.getElementById('txt_cidade').value = mensagem3;
document.getElementById('txt_estado').value = mensagem4;
}
  </script>


<?php
 $variavelphp = "<script>document.write(variaveljs)</script>";
 echo $variavelphp;
?>

<div class="col-md-6">
  <div class="form-group row">
    <label class="col-sm-3 col-form-label">CEP</label>
    <div class="col-sm-9">
      <input id="txt_cep" name="txt_cep" required="" minlength="8" class="form-control" value="55" placeholder="00000-000"/>
      <BR>
      <button onclick="consultar(this)"class="btn btn-primary btn-sm">Puxar CEP</button>
    </div>
  </div>
</div>
</div>
<div class="row">
<div class="col-md-6">
  <div class="form-group row">
    <label class="col-sm-3 col-form-label">Endereço</label>
    <div class="col-sm-9">
      <input id="txt_endereço" name="txt_endereço" type="text" class="form-control card-title" />
    </div>
  </div>
</div>
<div class="col-md-6">
  <div class="form-group row">
    <label class="col-sm-3 col-form-label">Bairro</label>
    <div class="col-sm-9">
      <input id="txt_bairro" name="txt_bairro" type="text" class="form-control card-title" />
    </div>
  </div>
</div>
</div>
<div class="row">
<div class="col-md-6">
  <div class="form-group row">
    <label class="col-sm-3 col-form-label">Cidade</label>
    <div class="col-sm-9">
      <input id="txt_cidade" name="txt_cidade" type="text" class="form-control card-title" />
    </div>
  </div>
</div>
<div class="col-md-6">
  <div class="form-group row">
    <label class="col-sm-3 col-form-label">Estado</label>
    <div class="col-sm-9">
      <input id="txt_estado" name="txt_estado" type="text" class="form-control card-title" />
    </div>
  </div>
</div></body>
</html>

 

Share this post


Link to post
Share on other sites

Salve newzenk. Você não explicou exatamente qual é a dificuldade, mas acho que está acontecendo o seguinte, você está querendo usar php depois que a página já foi carregada, o PHP é executado no servidor, que só te retorna uma página html, então, não dá pra você passar uma variável de js para um script php em uma página que já foi renderizada, mesmo pq não tem mais nada de php, só html e javascript quando a página esta carregada.

O que você pode fazer para contornar isso, é "mandar a variável" para a própria página, passando como parâmetro na URL, e ai ler a variável no seu php, mais ou menos assim (isso vale pra ceps no formato XXXXX-XXX).

 

<?php
if (isset($_GET['cep'])) {
  $cep = array();
  preg_match('/(\d{5})-(\d{3})/', $_GET['cep'], $cep);
  if (count($cep) != 3) {
    $msg_erro = "Formato do CEP inválido"; //Você pode usar essa mensagem pra colar na tela se passarem um cep inválido
  } else {
    $num_cep = $cep[1].$cep[2];
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://viacep.com.br/ws/$num_cep/json"); //TROCAR ' POR " - texto com aspas simples não interpretam variáveis.
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FILETIME, true);
    $end = curl_exec($ch);
    $json = $end;
    $obj = json_decode($json);
    $txtcep_endereço = $obj->{'logradouro'};
    $txtcep_bairro = $obj->{'bairro'};
    $txtcep_cidade = $obj->{'localidade'};
    $txtcep_estado = $obj->{'uf'};
    curl_close($ch);    
  }
}
?>

 

12 horas atrás, newzenk disse:

<?php $variavelphp = "<script>document.write(variaveljs)</script>"; echo $variavelphp; ?>

 

Novamente, você não consegue executar métodos de javascript "de dentro" de um script php.

O que você pode fazer agora, é recarregar a página passando o valor do campo cep para o GET.

 

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By DinhoPHP
      Olá!
      Alguém pode me dar uma luz sobre fazer um ORDER BY, hora ASC ou hora DESC? Por favor! Estou utilizando PHP e JS no projeto.
       
      $pegadados = $pdo->prepare("SELECT * FROM produtos WHERE categoria LIKE '%$dataSearch%' OR marca LIKE '%$dataSearch%' OR produto LIKE '%$dataSearch%' OR modelo LIKE '%$dataSearch%' OR descricao LIKE '%$dataSearch%' ORDER BY $filter $filter2");
    • By eduardodsilvaq
      function efetuarLogin ($x, $y) { $connect = db_connect(); $queryl = $connect->query("SELECT * FROM usuarios WHERE login = ". $x ." AND senha = " . $y . " "); if ($queryl->rowCount() == 0) { echo $x; echo $y; echo "<script>alert('Dados de Login incorretos.'); history.back();</script>"; exit; } else { setcookie("login",$x); header("Location:index.php"); exit; } } Esse código tem algum erro nessa linha:
      $queryl = $connect->query("SELECT * FROM usuarios WHERE login = ". $x ." AND senha = " . $y . " "); Nao consigo validar o login mesmo que os dados estejam corretos. Alguém da uma ajuda? 
       
    • By Pedro_silva
      Olá Pessoal Estou com uma dificuldade de como eu vou fazer esse sistema.
       
      Eu tenho que receber vários dados via POST enviado do formulário mais eu não sei como eu vou fazer para receber.
      esse codigo vai mostrar para o usuario os dados que estão dentro do mysql
       
      <?php
                          while($linha = mysqli_fetch_array($consultar)){
                          echo '<tr>';
                          echo '<th>';
                          echo $linha['Numero_patrimonio'];
                          echo '</th>';
                          echo '<th>';
                          echo $linha['tipo'];
                          echo '</th>';
                          echo '<th>';
                          echo $linha['marca'];
                          echo '</th>';
                              
                              //$gera = rand(1,100);
                              // echo"$gera";
                              ?>
                                                      
                              <td><input type="checkbox" name=""></td>
                              
                              </tr>
                              <?php
                          
                              }
                          ?>            
       
      Eu criei um  input dentro do while para que ele fosse criado para cada tabela que fosse aparecendo, eu pensei em colocar dentro de name um echo com o resultado do rand mas assim eu acho que seria difícil porque eu não sei se o post pegar os dados mandados sem a pessoa declarar ai eu resolvi tirar e deixar como comentário.
       
      Eu quero saber se eu uso um array dentro do name e que o post possa interpretar qual valor é 
    • By skti
      Boa tarde, me chamo Augusto e gostaria de saber como preencher o campo automaticamente seguindo o formato descrito no título.. por exemplo, ao digitar os 3 primeiros números do cpf, o '.' (ponto) ser preenchido automaticamente. Sou iniciante e o mais perto que cheguei foi criar um input que, quando são digitados 3 caracteres, apareça um '-' (hífen), ficando xxx- por exemplo, porém, de maneira incorreta pois ao continuar digitando o texto ficava xxxxxx- ao inves de xxx-xxx e assim por diante. Agradeço quem puder ajudar! :)
    • By eduardaarosaa
      Olá, Estou tentando enviar um formulário com 4 arquivos, porém não estou tendo sucesso.
      Estou usando laravel 5.8. Tenho uma view com 5 campos, sendo 4 arquivos e 1 texto. Através das rotas caminho o form para o controller. 
       
       


×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.