2013-12-02 4 views
0

Я пытаюсь использовать адрес из ввода формы, который находится в POST, и вставить этот адрес в этот javascript для геокодирования его в точку на карте. Я поместил POST в переменную javscript, но, похоже, я не понимаю, что это функция, которая геодезируется. здесь он живет на испытательном полигоне http://nickshanekearney.com/geo/php POST вставлен в javascript

<?php $address = $_POST["address"]; ?> 
<script> 
var address = "<?php echo $_POST["address"]; ?>"; 
var geocoder; 
var map; 

function codeAddress() { 
var address = document.getElementById("address").value; 
geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
    map.setCenter(results[0].geometry.location); 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: results[0].geometry.location 
    }); 

    infowindow = new google.maps.InfoWindow(); 
    var service = new google.maps.places.PlacesService(map); 
    service.nearbySearch(request, callback); 
    } else { 
    alert("Geocode was not successful for the following reason: " + status); 
    } 
}); 
} 
</script> 

<div id="map"></div> 
+0

увидеть двойные кавычки ('" ') здесь 'var address =" ";'. Это ошибка записи –

+0

Попробуйте заменить на 'var address =" ";' –

+0

с двойными кавычками, это работает –

ответ

0

Вы можете передать адрес в качестве аргумента для вашей функции, как это:

<?php $address = $_POST["address"]; ?> 
<script> 
var address = "<?php echo $_POST["address"]; ?>"; 
var geocoder; 
var map; 

function codeAddress(address) { 

geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
    map.setCenter(results[0].geometry.location); 
    var marker = new google.maps.Marker({ 
     map: map, 
     position: results[0].geometry.location 
    }); 

    infowindow = new google.maps.InfoWindow(); 
    var service = new google.maps.places.PlacesService(map); 
    service.nearbySearch(request, callback); 
    } else { 
    alert("Geocode was not successful for the following reason: " + status); 
    } 
}); 
} 
</script> 

<div id="map"></div> 
+0

Это все хорошие советы им так близко, что вы можете видеть здесь мой прогресс http://nickshanekearney.com/geo/ Теперь он работает, но не нагрузка Мне нужно нажать кнопка отправки дважды. Это потому, что мне нужно запустить функцию при загрузке вместо отправки формы? – user3029877

1

Просто удалите эту строку:

var address = document.getElementById("address").value; 

Потому что переписывает address вы уже объявили на третьей строчке.

1

Странно, что вы эхо-значение передаете JS, но ваш JS получает адрес от элемента с ID = address, перезаписав полученный вами PHP-результат.

Вы, вероятно, хотите:

function codeAddress() { 
    var address = "<?php echo $_POST['address']; ?>"; 
    geocoder.geocode({ 'address': address}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location); 
     var marker = new google.maps.Marker({ 
     map: map, 
     position: results[0].geometry.location 
     }); 

     infowindow = new google.maps.InfoWindow(); 
     var service = new google.maps.places.PlacesService(map); 
     service.nearbySearch(request, callback); 
    } else { 
     alert("Geocode was not successful for the following reason: " + status); 
    } 
    }); 
} 
</script> 
2

Я думаю, что у Вас есть ошибка в quotes письменной форме.
Обратитесь строку ниже:

var address = "<?php echo $_POST["address"]; ?>"; 


должно быть:

var address = "<?php echo $_POST['address']; ?>"; 

или

var address = "<?php echo $address; ?>";// because you already declared variable $address at the top of your source code 

И переменная address, что вы объявили перезаписывается, когда у ou call codeAddress() функция. Так ясно эта линия тоже:

var address = document.getElementById("address").value; 

Или , если вы используете его, вы должны проверить, если размещена переменная существует или нет:

function codeAddress(){ 
<?php 
if (isset($_POST['address'])){ 
echo "var address = $_POST['address'];"; 
} 
else{ 
echo "var address = document.getElementById('address').value;"; 
} 

?> 

... 
+0

var address = " "; это тоже работает –

Смежные вопросы