Функция jQuery не смогла передать информацию о геокоде в переменную

<script>
var geocoder;
var loc1;
var loc;


$(document).ready(function() { 
    $("#testForm").submit(function(e) {
        e.preventDefault();
        loc1 = searchAddress($('#Q1').val());
        $.post('demofindcar_p.php',{lat:loc1.lat(),lng:loc1.lng()},function(result){
            $('#output').empty().append(result);
            });
    });
});


// - Functions here - //
function searchAddress(adr) {
    geocoder = new google.maps.Geocoder();  
    geocoder.geocode({address:adr}, function(result){
        loc = result[0].geometry.location;
    });
    return loc;
}


</script>

У меня есть вышеуказанный код. Он состоит из функции searchAddress, которая принимает адрес, введенный пользователем из формы, и возвращает информацию о широте и долготе через переменную «loc».

часть AJAX принимает информацию о широте и долготе и вычисляет расстояния по прямой с помощью адресов в моей базе данных. Эта часть работает нормально.

Однако, глядя на следующий код:

loc1 = searchAddress($('#Q1').val());

Я не могу передать loc в loc1. Я получил сообщение об ошибке в разделе $.post{}:

Uncaught TypeError: невозможно вызвать метод 'lat' из неопределенного.

в чем проблема с этим кодом??? :(


person Chris Yeung    schedule 19.01.2012    source источник


Ответы (1)


Геокодер работает не совсем так, как вы его реализовали. Обратный вызов function(result) не будет раскрывать loc для вашего возврата. Я бы попробовал что-то вроде этого:

$(document).ready(function() { 
  $("#testForm").submit(function(e) {
    e.preventDefault();
    loc1 = searchAddress($('#Q1').val());
  });
});

function searchAddress(adr) {
  geocoder = new google.maps.Geocoder();  
  geocoder.geocode({address:adr}, function(result){
    loc = result[0].geometry.location;
    $.post('demofindcar_p.php', {lat:loc.lat(),lng:loc.lng()}, function(result){
      $('#output').empty().append(result);
    });
  });
}
person bamnet    schedule 19.01.2012