Oscar
Oscar

Reputation: 105

Send JavaScript variable to PHP

What im trying to do here is sending a JavaScript variable to a PHP function. What I'm developing is a jQuery Mobile App where you can check in when you reach a specific longitude/latitude. But I'm having problem with sending the longitude/latitude to the PHP-function. Im sending it to a PHP-function because im gonna do a comparison with the longitude/latitude that I've stored in my database.

Here's my code.

        function testResults() {

            if(navigator.geolocation) {
                //Get the current position
                navigator.geolocation.getCurrentPosition(function(position) {
                    var latitude = position.coords.latitude;
                    var longitude = position.coords.longitude;
                    document.write("lat", latitude);
                    document.write('<br /><br />');
                    document.write("long", longitude);
                });
            } else {
                alert("Sorry... your browser does not support the HTML5 GeoLocation API");
            }

         //////////// Here I tried with jQuery/Ajax. I know that it's wrong.
        ////////////  Im putting it here so that it maybe clarifies what Im 
       ////////////   trying to do.

            $.post("checkLocation.php", {
                lat : latitude,
                longi : longitude
            }, function(data) {
                alert("Data Loaded: " + data);
            });

      ////////////////////////////////////////////////////////////////////

        }

        testResults();

How do I approach this problem? I've tried with JSON, but i didn't get it to work. Any help will be appreciated.

Upvotes: 1

Views: 1354

Answers (4)

frank_neff
frank_neff

Reputation: 1012

Try to use the AJAX-Request in callback (Proof of concept, not shure if it works):

function testResults()
{
    if (navigator.geolocation)
    {
        //Get the current position
        navigator.geolocation.getCurrentPosition(function (position)
        {
            var latitude = position.coords.latitude;
            var longitude = position.coords.longitude;

            // do callback                
            $.ajax(
            {
                type: "POST",
                url: "checklocation.php",
                data: "lat=" + latitude + "&lon=" + longitude
            }).done(function (msg)
            {
                alert("Data Saved: " + msg);
            });

        });
    }
    else
    {
        alert("Sorry... your browser does not support the HTML5 GeoLocation API");
    }
}

testResults();

Cheers. Frank

Upvotes: 0

Distdev
Distdev

Reputation: 2312

navigator.geolocation.getCurrentPosition(function(position) {
                var latitude = position.coords.latitude;
                var longitude = position.coords.longitude;
                document.write("lat", latitude);
                document.write('<br /><br />');
                document.write("long", longitude);
            });

you have local vars latitude and longitude here. If you want to use them outside of this function you can use global vars:

var latitude;
var longitude;
//...
navigator.geolocation.getCurrentPosition(function(position) {
                latitude = position.coords.latitude;
                vlongitude = position.coords.longitude;
                document.write("lat", latitude);
                document.write('<br /><br />');
                document.write("long", longitude);
            });

//usage(transfer) of vars

Upvotes: 0

Simone
Simone

Reputation: 21262

Try to use AJAX

http://api.jquery.com/jQuery.ajax/

Your handler should look like this:

$.ajax({
  type: "POST",
  url: "checklocation.php",
  data: "lat="+latitude+"&longi="+longitude
}).done(function( msg ) {
  alert( "Data Saved: " + msg );
});

Upvotes: 0

SLaks
SLaks

Reputation: 887285

You're sending the request before you get the geolocation response

You need to do it inside the callback.

Upvotes: 2

Related Questions