Pegar o valor de uma variavel JS e passar pra uma PHP

06/09/2020

19

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.
Responder

Post mais votado

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:

<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
Responder

Mais Posts

10/09/2020

Matheus Silva

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?
Responder

11/09/2020

Alex William

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.
Responder

13/09/2020

Matheus Silva

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.


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.
Responder

06/04/2021

Davi Aaujo

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.


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.
Na minha aplicação tambem fica nesse erro, você conseguiu resolver esse problema?
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar