Geolocation + Ajax + PHP - what am I doing wrong?

5
<body>
    <script type='text/javascript'>
        var lati = '';
        var long = '';
        var cidade = '';
        var estado = '';
        var pais = '';
        var dadosajax = '';

        navigator.geolocation.getCurrentPosition(function (posicao) {
            var url = "http://nominatim.openstreetmap.org/reverse?lat=" + posicao.coords.latitude + "&lon=" + posicao.coords.longitude + "&format=json&json_callback=preencherDados";

            var script = document.createElement('script');
            script.src = url;
            document.body.appendChild(script);
            lati = posicao.coords.latitude;
            long = posicao.coords.longitude;

        });

        function preencherDados(dados) {
            cidade = dados.address.city;
            estado = dados.address.state;
            pais = dados.address.country;



            alert('cordenadas:' + lati + ',' + long + '    Lugar:' + cidade + ',' + estado + ',' + pais);
            dadosajax = cidade;

            alert(dadosajax);


            $.ajax({
                type: "POST",
                url: "teste6.php",
                data: {cidade: cidade}

            });

        }
        ;

    </script>
</body>

file teste6.php :

<?php
require_once './php/conn_db.php';

    $cidade = $_POST['cidade'];
    $sql = "INSERT INTO arq011 (codigo,cidade) VALUES (null, :cidade)";
    $stmt = Conexao::getInstance()->prepare($sql);
    $stmt->bindParam(':cidade', $cidade, PDO::PARAM_STR);
    $executa = $stmt->execute();

?>

You're not saving ... what am I doing wrong?

    
asked by anonymous 17.05.2016 / 20:58

2 answers

0

The match will be just that:

//$("#localizacao").submit(function (e) {
//    e.preventDefault();
//    alert(dadosajax);
    $.ajax({
        type: "POST",
        url: "teste6.php",
        data: dadosajax
    });
//});
    
18.05.2016 / 15:35
-1

I found out why I was not sending data.

Follow the complete code and it works.

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.3/jquery.min.js"></script><title>Geolocation</title><metaname="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <style>
        html, body {
            height: 100%;
            margin: 0;
            padding: 0;
        }
        #map {
            height: 100%;
        }
    </style>
</head>
<body>
    <form id="localizacao" >

        <input id="cidade" value="">
        <input id="estado" value="">
        <input id="pais" value="">

        <button   type="submit" class="btn btn-default ">Salvar</button>
    </form>

    <script type='text/javascript'>

        var lati = '';
        var long = '';
        var cidade = '';
        var estado = '';
        var pais = '';
        var dadosajax = '';

        navigator.geolocation.getCurrentPosition(function (posicao) {
            var url = "http://nominatim.openstreetmap.org/reverse?lat=" + posicao.coords.latitude + "&lon=" + posicao.coords.longitude + "&format=json&json_callback=preencherDados";

            var script = document.createElement('script');
            script.src = url;
            document.body.appendChild(script);
            lati = posicao.coords.latitude;
            long = posicao.coords.longitude;

        });

        function preencherDados(dados) {
            cidade = dados.address.city;
            estado = dados.address.state;
            pais = dados.address.country;



            alert('cordenadas:' + lati + ',' + long + '    Lugar:' + cidade + ',' + estado + ',' + pais);


            document.getElementById('cidade').value = cidade;
            document.getElementById('estado').value = estado;
            document.getElementById('pais').value = pais;


            dadosajax = {'cidade':cidade, 'estado':estado, 'pais':pais};

            $("#localizacao").submit(function (e) {
                e.preventDefault();
                alert(dadosajax);
                $.ajax({
                    type: "POST",
                    url: "teste6.php",
                    data: dadosajax

                });
            });




        }
        ;



      </script>
    </body>
</html>

Test.php file

<?php
require_once './php/conn_db.php';

    $cidade = $_POST['cidade'];
    $estado = $_POST['estado'];
    $pais = $_POST['pais'];
        $sql = "INSERT INTO arq011 (codigo,cidade, estado, pais) VALUES (null, :cidade, :estado, :pais)";
    $stmt = Conexao::getInstance()->prepare($sql);
    $stmt->bindParam(':cidade', $cidade, PDO::PARAM_STR);
    $stmt->bindParam(':estado', $estado, PDO::PARAM_STR);
    $stmt->bindParam(':pais', $pais, PDO::PARAM_STR);    
    $executa = $stmt->execute();


?>

Now how can I save city, state, and country without having to click the SAVE button? (ie when you detect geolocation, automatically save it to the database!)

    
18.05.2016 / 15:29