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

JavaScript

PHP

Ajax

06/09/2020

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.
Matheus Silva

Matheus Silva

Curtidas 0

Melhor post

Alex William

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:

<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

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?
GOSTEI 0
Alex William

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.
GOSTEI 1
Matheus Silva

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.


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

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.


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?
GOSTEI 0
POSTAR