Passando valores de JavaScript para PHP usando AJAX

Não sei por que meu código não está funcionando, estou tentando enviar as coordenadas de JavaScript para PHP usando o AJAX e posso puxar valores de JavaScript para checkbox de texto, mas os valores não são passados ​​para o PHP. Qualquer ajuda é muito apreciada.

     function getLocation() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(showPosition); } } function showPosition(position) { document.getElementById("getlat").value = position.coords.latitude; document.getElementById("getlon").value = position.coords.longitude; } $( document ).ready(function() { $.ajax({url:"samepage3.php",type:"POST",async:false, data:{getlat:$("#getlat").val(),getlon:$("#getlon").val()} }); });         

UPDATE 1:

Estou executando este código no arquivo samepage3.php e preciso que a ação aconteça na mesma página sem recarregar a página

Você não pode executar o script PHP na mesma página3.php, depois que a página estiver totalmente carregada. Sugiro separar a página e criar a resposta usando o AJAX. Algo assim.

Arquivo index.php

 < !DOCTYPE html>          

File response.php

 < ?php if (isset($_POST["getlat"])) { $lat = $_POST["getlat"]; echo 'Latitude: ', $lat, '
'; } if (isset($_POST["getlon"])) { $lon = $_POST["getlon"]; echo 'Longitude : ', $lon; }

A causa raiz é a function getLocation será um grande atraso, então você precisa triggersr a binding ajax depois que o getLocation for concluído. Veja a versão revisada do sopro:

 < !DOCTYPE html>         < ?php if(isset($_POST["getlat"])) { $lat = $_POST["getlat"]; echo $lat; } if(isset($_POST["getlon"])) { $lon = $_POST["getlon"]; echo $lon; } ?>   

A única alteração é fazer chamada ajax na function showPosition.

Primeiro, separe o processamento PHP. Agora, depois de obter a localização usando o retorno de chamada, execute o AJAX. Código de amostra:

samepage3.php

      

request.php

 < ?php if($_SERVER['REQUEST_METHOD'] == 'POST') { $lat = $_POST["getlat"]; $lon = $_POST["getlon"]; echo json_encode(array('lat' => $lat, 'lon' => $lon)); exit; } ?> 

O único propósito do AJAX é buscar e enviar dados de um servidor sem recarregar a página.

Você não precisa de nenhum dado do servidor. Você precisa de dados do BROWSER – ou seja, coordenadas de localização geográfica, então AJAX e php não têm relação com o que você precisa fazer aqui. Isso pode ser feito em HTML puro.

Por outro lado, se você quer fazer algo como salvar as coordenadas em um database ou usar o endereço IP como um retorno quando o navegador não suportar a localização geográfica, é quando você poderia usar a ajuda de um servidor e o AJAX entraria em jogo .

Simplesmente substitua sua function ajax por getLocation() .

 < !DOCTYPE html>