Variável javascript não recebendo o valor corretamente do input type=“date”

29/07/2021

0

Estou com o seguinte problema, tenho uma aplicação em PHP que tem um input type="date" e através do método POST o valor selecionado neste input é armazenado numa variável PHP. Porém, quando vou atribuir o valor da variável PHP numa variável Javascript estou tendo problemas.

Por exemplo

<?php
$DataIni = $_POST['DataIni'];
// a variável $DataIni recebe o valor '2021-07-29'
?>

<script>
var DataIniSel =  <?php echo $DataIni ?>;
</script>
  


A variável Javascript "DataIniSel" em vez de armazenar '2021-07-29', está armazenando 1985, que é o resultado da subtração 2021 menos 07 menos 29.

Alguém pode me ajudar a fazer a variável Javascript receber corretamente o valor da variável PHP?

Desde já eu agradeço. Obrigado.
Carlos Massam

Carlos Massam

Responder

Posts

01/08/2021

Yuri Aguiar

Então amigo... como o PHP corre do lado do servidor para criar a página, e o JS corre do lado do cliente com a página já criada. Se você está utilizando desta maneira, a único jeito deles "falarem" seria via ajax.
Agora, se estiver utilizando um framework você geralmente utiliza um template engine para trabalhar com variáveis no HTML, podendo também passar estas variáveis para o JS. pode ser que por conta do PHP receber o valor do date como '2021-07-29', ele não está interpretando como Date e sim como valores numéricos, já que o JS é uma linguagem de tipagem fraca. Você poderia tentar realizar um casting, mas entenda que no JavaScript não possui dados do tipo data.
Umas melhor maneira seria converter para tipo String e ver como ele se comporta.

<script>
var DataIniSel =  String(<?php echo $DataIni ?>);
</script>


Ps. não sei se essa seria a melhor abordagem.
Abraço.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar