I have 2 global variables and changing them into a function but it's still shows as undefined.
var lat
var long;
function getLocation()
{
    if (navigator.geolocation)
    {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else
    {
        console.log("Geolocation is not supported by this browser.");
    }
}
function showPosition(position)
{
    lat = position.coords.latitude;
    long = position.coords.longitude;
}
getLocation();
console.log(lat + "   " + long);
I have checked other questions on this site but none seem to have answer to this. When I check inside the showPostion() function, it shows actual coordinates. I am new to js please help.
Edit:
I have another function in which I want to access global variables.
function generate_list(params, fromPageLoad)
{
    var ajax_url = jQuery('#ajax_post_url').val();
    var data = { action: 'generate_list', latitude: lat, longitude: long };
    var extended_data = jQuery.extend(data, params);
    jQuery.ajax({
    type: 'POST',
    data: extended_data,
    url: ajax_url,
    success: function (data) {
            //console.log(data);}
}
This function is getting called on the loading of the page with dynamic parameters.
I also tried to return lat lang in showPosition() but it's not working. The 'POST' or 'GET' method doesn't return coordinates variable.
function showPosition(position)
    {
        var ajax_url = jQuery('#ajax_post_url').val();
        var lat = position.coords.latitude;
        var long = position.coords.longitude;
        jQuery.ajax({
            type: 'POST',
            data: { lat: lat,long: long },
            url: ajax_url,
            success: function(data)
            {
            }
        });
        console.log("Latitude: " + position.coords.latitude +
            "Longitude: " + position.coords.longitude);
    }
If user allow the location, I want to change the list.
 
     
    