Uncaught ReferenceError: моя функция не определена - PullRequest
0 голосов
/ 27 февраля 2012

Я пытаюсь создать приложение CakePHP, которое позволит пользователю обновить информацию об адресе, а затем сохранить новый широту / долготу в базе данных. Я использую геокодер Google для получения информации о широте и долготе, но моя функция не работает. У меня почти нет опыта работы с Javascript, поэтому я не уверен, что сделал неправильно. Мой код как бы объединяет то, что я видел в интернете. Пожалуйста, если бы кто-то мог мне посоветовать, это было бы здорово.

Вот моя функция геокодирования:

<script type="text/javascript">

function getLatLong(address){
  var geo = new google.maps.Geocoder;
  var address =<?php echo $this->data['Location']['address'].' '.$this->data['Location']['city'].', '.$this->data['Location']['state'].' '.$this->data['Location']['zip']; ?>;
  geo.geocode({'address':address},function(results, status){
          if (status == google.maps.GeocoderStatus.OK) {
            return results[0].geometry.location;
            alert('The address is' + address);
          } else {
            alert("Geocode was not successful for the following reason: " + status);
          }

   });

  }
</script>

Над моим html вот скрипт для его вызова по загрузке страницы:

<script>
if(window.attachEvent) {
window.attachEvent('onload', getLatLong());
} else {
if(window.onload) {
    var curronload = window.onload;
    var newonload = function() {
        curronload();
        getLatLong();
    };
    window.onload = newonload;
} else {
    window.onload = getLatLong();
}
}
</script>

У меня в заголовке документа:

<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> 

Когда я загружаю страницу и проверяю ее хромом, я вижу

Uncaught ReferenceError: getLatLong is not defined   (anonymous function)1:89
1:106      Uncaught SyntaxError: Unexpected identifier

Ответы [ 2 ]

1 голос
/ 27 февраля 2012

Вы должны взглянуть на полученный код.Могу поспорить, что это

var address = address here;

Вы должны поместить вывод PHP в кавычки, чтобы сделать его допустимой строкой JavaScript:

var address = "<?php echo ... ?>"; 
0 голосов
/ 28 февраля 2012

Для тех, кто может столкнуться с этим, я получил его, изменив мою функцию javascript следующим образом:

<script type="text/javascript" >
var geocoder;
function getLatLong(address){

  geocoder = new google.maps.Geocoder();
  var add = document.getElementById("LocationAddress");

  var address =add.value;
  geocoder.geocode({ 'address':address},function(results, status){
          if (status == google.maps.GeocoderStatus.OK) {
            document.getElementById("lat").innerHTML="<strong>"+results[0].geometry.location.lat()+"</strong><br />";
            document.getElementById("lng").innerHTML="<strong>"+results[0].geometry.location.lng()+"</strong>";

          } else {
            alert("Geocode was not successful for the following reason: " + status);
          }

   });

}

где раньше я использовал

return results[0].geometry.location;
        alert('The address is' + address);

, который не работал, как только я заменил его на document.write (results [0] geometry.location); мое оповещение начало работать. Я также определил переменную с именем geocoder перед моей функцией.

...