0
我有一個網站,其中有一個企業目錄,其中包含城市鏈接,用戶可以點擊並查找該城市附近的企業。使用AJAX插入經緯度變量不起作用的經緯度
到目前爲止,我已經完成了這一工作,只需在鏈接上使用GET變量並使用PHP和Google Maps API處理位置即可。不幸的是,該網站每天開始生成超過2500條查詢,所以我決定嘗試使用Javascript API來檢索經緯度/客戶端,當用戶點擊鏈接,然後使用AJAX將其設置爲SESSION。我以爲我在正確的軌道上,但它不起作用。它似乎根本不起作用,或者只是多次單擊鏈接後才更改SESSION變量。我認爲設置async:false
會修復它,但它沒有
任何想法?
這裏是我的測試頁:
<?php
session_start();
require_once('../includes/header.php');
echo $_SESSION["address"] . "<br>";
echo $_SESSION["lat"] . "<br>";
echo $_SESSION["lng"] . "<br>";
?>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js"></script>
<a href="test.php" id="Orlando" class="loc">Orlando</a><br /><br />
<a href="test.php" id="Tampa" class="loc">Tampa</a><br /><br />
<a href="test.php" id="Daytona" class="loc">Daytona</a><br /><br />
<script type="text/javascript">
function setLoc(lat,lng,address){
$.ajax({
async: false,
type: 'POST',
url: 'setLoc.php',
data: {lat: lat,lng: lng,address: address}
});
}
$('.loc').each(function() {
$(this).click(function() {
var address = $(this).attr('id');
var geocoder = new google.maps.Geocoder();
geocoder.geocode({ 'address': address+'FL'}, function(results, status) {
var location = results[0].geometry.location;
lat=location.lat();
lng=location.lng();
setLoc(lat,lng,address);
});
});
});
</script>
<?php
require_once('../includes/footer.php');
?>
這是setLoc.php文件:
<?php
session_start();
unset($_SESSION["address"]);
unset($_SESSION["lat"]);
unset($_SESSION["lng"]);
$_SESSION["lat"] = $_POST["lat"];
$_SESSION["lng"] = $_POST["lng"];
$_SESSION["address"] = $_POST["address"]
?>
我加入了取消設置,因爲我認爲它清除每次會有所作爲,但它沒有
首先,不要將異步設置爲false,*這裏有龍*。請記住,AJAX是異步的,所以在完成AJAX之前,SESSION變量不會被設置。你可能想使用['.when()'](http://api.jquery.com/jquery.when/)'unsets'似乎沒有必要。 – 2014-10-17 16:10:47
感謝您指出正確的方向,我最終使用'preventDefault()'和'success:'來完成我所需要的功能。 – Muskogeee 2014-10-17 16:45:19