Pegar o valor de uma variavel JS e passar pra uma PHP
Pessoal, estou com a seguinte situação:
Eu tenho uma página pra finalizar o pedido, e lá eu puxo o valor do frete de acordo com a localização do cliente. Esse valor é gerado dentro de uma variável JS e eu preciso transformar esse valor em uma variável php para que eu possa adiciona-la no valor total e subir para o banco de dados.
Essa é a minha pagina: https://prnt.sc/ucmvoc
Eu coloco o nome da rua em "Endereço" e a API do Google Distance Matrix faz o cálculo do valor do frete: https://prnt.sc/ucmwx6
Porém, a questão é essa: Como eu pego o valor do frete (variavel "price") e converto ela em uma variável php?
Esse é o meu código que apresenta o valor do frete:
<li class="list-group-item d-flex justify-content-between">
<span>Taxa de Entrega</span>
<strong id="valortaxa">R$0,00</strong>
Esse é o Código da minha API:
<input type="hidden" id="origin" value="R. Leonardo Martins Neto, 358/470 - Dos Casa, São Bernardo do Campo - SP, 09850-020, Brasil" />
<script type="text/javascript">
function getDistanceValue() {
//API gerada no Google
var origin = $("#origin").val();
var destination = $("#rua").val() + ", São Bernardo do Campo - SP Brasil";
var service = new google.maps.DistanceMatrixService;
service.getDistanceMatrix({
origins: [origin],
destinations: [destination],
travelMode: 'DRIVING',
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false
}, function(response, status) {
if (status == "OK") {
//KM price
var pricePerKM = 1.5;
var msg = document.querySelector('p');
//meter to kilometer conversion
var distance = response.rows[0].elements[0].distance.value;
var distanceKM = (distance/1000);
var price = (Math.ceil(distanceKM) * pricePerKM).toFixed(2);
$('#valortaxa').html("R$" + price);
} else {
$('#valortaxa').html('Ocorreu um erro');
}
}
);
}
</script>
OBS: ISS "$teste = '<script>document.write(olamundo)</script>'" não funciona. Já vi diversos foruns que o método para resolver esse problema é por meio do Ajax. Mas não consegui converter essas requisições em Ajax para o meu projeto.
Eu tenho uma página pra finalizar o pedido, e lá eu puxo o valor do frete de acordo com a localização do cliente. Esse valor é gerado dentro de uma variável JS e eu preciso transformar esse valor em uma variável php para que eu possa adiciona-la no valor total e subir para o banco de dados.
Essa é a minha pagina: https://prnt.sc/ucmvoc
Eu coloco o nome da rua em "Endereço" e a API do Google Distance Matrix faz o cálculo do valor do frete: https://prnt.sc/ucmwx6
Porém, a questão é essa: Como eu pego o valor do frete (variavel "price") e converto ela em uma variável php?
Esse é o meu código que apresenta o valor do frete:
<li class="list-group-item d-flex justify-content-between">
<span>Taxa de Entrega</span>
<strong id="valortaxa">R$0,00</strong>
Esse é o Código da minha API:
<input type="hidden" id="origin" value="R. Leonardo Martins Neto, 358/470 - Dos Casa, São Bernardo do Campo - SP, 09850-020, Brasil" />
<script type="text/javascript">
function getDistanceValue() {
//API gerada no Google
var origin = $("#origin").val();
var destination = $("#rua").val() + ", São Bernardo do Campo - SP Brasil";
var service = new google.maps.DistanceMatrixService;
service.getDistanceMatrix({
origins: [origin],
destinations: [destination],
travelMode: 'DRIVING',
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false
}, function(response, status) {
if (status == "OK") {
//KM price
var pricePerKM = 1.5;
var msg = document.querySelector('p');
//meter to kilometer conversion
var distance = response.rows[0].elements[0].distance.value;
var distanceKM = (distance/1000);
var price = (Math.ceil(distanceKM) * pricePerKM).toFixed(2);
$('#valortaxa').html("R$" + price);
} else {
$('#valortaxa').html('Ocorreu um erro');
}
}
);
}
</script>
OBS: ISS "$teste = '<script>document.write(olamundo)</script>'" não funciona. Já vi diversos foruns que o método para resolver esse problema é por meio do Ajax. Mas não consegui converter essas requisições em Ajax para o meu projeto.
Matheus Silva
Curtidas 0
Melhor post
Alex William
10/09/2020
Olá amigo, tudo bem?
Vamos por partes:
PHP é uma linguagem Server-side, isso significa que o servidor interpreta o código, monta o DOM e retorna pro navegador o código montado.
Javascript é uma linguagem Client-side, isso significa que ela só roda no navegador, quando o DOM esta carregado.
Sabendo disso, o que tenho para dizer é: A menos que você mande os dados para o servidor(AJAX é usado para isso) você não consegue passar uma variável Client-side para o Server-side. O contrario é possível.
Para passar uma variável do javascript para o PHP, utilize uma função parecida com esta:
ou então:
Lembrando que isto é um exemplo de como funciona o AJAX. Você deve ver como fazer, qualquer coisa estou a disposição para auxiliar.
Espero ter ajudado. :D
Vamos por partes:
PHP é uma linguagem Server-side, isso significa que o servidor interpreta o código, monta o DOM e retorna pro navegador o código montado.
Javascript é uma linguagem Client-side, isso significa que ela só roda no navegador, quando o DOM esta carregado.
Sabendo disso, o que tenho para dizer é: A menos que você mande os dados para o servidor(AJAX é usado para isso) você não consegue passar uma variável Client-side para o Server-side. O contrario é possível.
Para passar uma variável do javascript para o PHP, utilize uma função parecida com esta:
<script> function passaValorFrete(valor){ $.ajax({ method: "POST", url: "cadastrar.php?valorFrete="+valor }); }; <script>
ou então:
<script> function passaValorFrete(valor){ $.ajax({ method: "POST", url: "cadastrar.php", data: "{ valorFrete: "+valor+"}" }); }; <script>
Lembrando que isto é um exemplo de como funciona o AJAX. Você deve ver como fazer, qualquer coisa estou a disposição para auxiliar.
Espero ter ajudado. :D
GOSTEI 1
Mais Respostas
Matheus Silva
06/09/2020
Muito Obrigado pela ajuda. Sou iniciante e o que eu entendi foi:
"function passaValorFrete(valor)". Aqui foi criado a função chamada "passaValorFrete" e criado a variavel (valor)
$.ajax({
method: "POST",
url: "cadastrar.php",
data: "{ valorFrete: "+valor+"}"
});
Aqui eu não entendi muito bem. Foi chamado o método POST e chamado a página PHP. No "data" está chamando "valorFrete:" e a variavael "valor" certo? eu não entendi muito bem esse "valorFrete". Seria o "name" onde aparece o valor do frete na página php?
"function passaValorFrete(valor)". Aqui foi criado a função chamada "passaValorFrete" e criado a variavel (valor)
$.ajax({
method: "POST",
url: "cadastrar.php",
data: "{ valorFrete: "+valor+"}"
});
Aqui eu não entendi muito bem. Foi chamado o método POST e chamado a página PHP. No "data" está chamando "valorFrete:" e a variavael "valor" certo? eu não entendi muito bem esse "valorFrete". Seria o "name" onde aparece o valor do frete na página php?
GOSTEI 0
Alex William
06/09/2020
Olá amigo, tudo bem?
Sim, no "POST" o valorFrete é a variavel dentro do json que vai receber o valor calculado.
Uma coisa somente que eu esqueci de mudar: Se voce mandar o valor na URL o método é "GET" e não "POST".
Em todos os exemplos, o "valorFrete" é o "name" do campo/parametro que eu estou passando para a pagina, mas você pode renomear como "valor" ou "frete" ou como você quiser.
Espero ter ajudado.
Sim, no "POST" o valorFrete é a variavel dentro do json que vai receber o valor calculado.
Uma coisa somente que eu esqueci de mudar: Se voce mandar o valor na URL o método é "GET" e não "POST".
Em todos os exemplos, o "valorFrete" é o "name" do campo/parametro que eu estou passando para a pagina, mas você pode renomear como "valor" ou "frete" ou como você quiser.
Espero ter ajudado.
GOSTEI 1
Matheus Silva
06/09/2020
Olá amigo, tudo bem?
Sim, no "POST" o valorFrete é a variavel dentro do json que vai receber o valor calculado.
Uma coisa somente que eu esqueci de mudar: Se voce mandar o valor na URL o método é "GET" e não "POST".
Em todos os exemplos, o "valorFrete" é o "name" do campo/parametro que eu estou passando para a pagina, mas você pode renomear como "valor" ou "frete" ou como você quiser.
Espero ter ajudado.
Sim, no "POST" o valorFrete é a variavel dentro do json que vai receber o valor calculado.
Uma coisa somente que eu esqueci de mudar: Se voce mandar o valor na URL o método é "GET" e não "POST".
Em todos os exemplos, o "valorFrete" é o "name" do campo/parametro que eu estou passando para a pagina, mas você pode renomear como "valor" ou "frete" ou como você quiser.
Espero ter ajudado.
Entendi. Bom, fiz aqui e está me gerando o seguinte erro: >Notice</b>: Undefined index: valortaxa. Tem alguma forma de eu entrar em contato com vocÊ? Estou com algumas dificuldades. Claro, se voce puder.
GOSTEI 0
Davi Aaujo
06/09/2020
Olá amigo, tudo bem?
Sim, no "POST" o valorFrete é a variavel dentro do json que vai receber o valor calculado.
Uma coisa somente que eu esqueci de mudar: Se voce mandar o valor na URL o método é "GET" e não "POST".
Em todos os exemplos, o "valorFrete" é o "name" do campo/parametro que eu estou passando para a pagina, mas você pode renomear como "valor" ou "frete" ou como você quiser.
Espero ter ajudado.
Sim, no "POST" o valorFrete é a variavel dentro do json que vai receber o valor calculado.
Uma coisa somente que eu esqueci de mudar: Se voce mandar o valor na URL o método é "GET" e não "POST".
Em todos os exemplos, o "valorFrete" é o "name" do campo/parametro que eu estou passando para a pagina, mas você pode renomear como "valor" ou "frete" ou como você quiser.
Espero ter ajudado.
Entendi. Bom, fiz aqui e está me gerando o seguinte erro: >Notice</b>: Undefined index: valortaxa. Tem alguma forma de eu entrar em contato com vocÊ? Estou com algumas dificuldades. Claro, se voce puder.
GOSTEI 0