我正在嘗試構建一個簡單的移動應用程序,用於檢查數據庫並根據用戶的位置爲用戶提供正確的場所。基本上,我有兩個文件:一個用geolocation
,JavaScript和AJAX調用,另一個用php檢查數據庫併發回正確的結果。一切都自行完成,但是當我嘗試將geolocation
座標發送給PHP時,它將返回undefined
。爲什麼它沒有選取座標(它們在另一個窗口中彈出)?我該如何解決它?將AJAX通過JavaScript變量傳遞給PHP時的未定義變量
這是我geolocation
和AJAX代碼:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$(document).ready(function() {
var latitude;
var longitude;
if (navigator.geolocation) {
var timeoutVal = 10 * 1000 * 1000;
navigator.geolocation.getCurrentPosition(
displayPosition,
displayError,
{ enableHighAccuracy: true, timeout: timeoutVal, maximumAge: 0 }
);
}
else {
alert("Geolocation is not supported by this browser");
}
function displayPosition(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
alert("Latitude: " + position.coords.latitude + ", Longitude: " + position.coords.longitude);
}
function displayError(error) {
var errors = {
1: 'Permission denied',
2: 'Position unavailable',
3: 'Request timeout'
};
alert("Error: " + errors[error.code]);
}
var request = $.ajax({
url: "http://cs11ks.icsnewmedia.net/mobilemedia/ajax.php?latitude=" + latitude + "&longitude=" + longitude,
type: "GET",
dataType: "html"
});
request.done(function(msg) {
$("#ajax").html(msg);
});
request.fail(function(jqXHR, textStatus) {
alert("Request failed: " + textStatus);
});
});
</script>
這裏是PHP的處理這些變量位:
if (isset($_GET['latitude']) && isset($_GET['longitude'])) {
$latitude = $_GET['latitude'];
$longitude = $_GET['longitude'];
echo "Geolocation seems to work...";
echo $latitude;
echo $longitude;
//continue here
}else{
echo "Hello. I am your geolocation and I am not working.";
}
我得到的是「地理位置似乎工作... undefinedundefined「
謝謝你的快速回復!不幸的是,這並沒有幫助 - 現在什麼都沒有顯示出來,所以我猜AJAX通話已經壞了。 – Hakashi
這應該起作用,它必須以這種或那種形式出現,同樣,Geolocation API是異步的,並且不能在回調之外使用返回的數據。警報是否彈出,您確定同源策略在這裏不是問題嗎? – adeneo
我只是在手機上測試它,以確保它不是模擬器故障。由於警報(「緯度:」+ position.coords.latitude +「,經度:」+ position.coords.longitude);現在不再有任何東西出現了。但我也沒有得到一個錯誤。只是一個空白頁面。 – Hakashi