2014-08-28 27 views
0

我想送GoeLocation從JavaScript座標使用Cookie PHP和我得到一個通知爲Notice: Undefined index: data in /Applications/XAMPP/xamppfiles/htdocs/samepage.php on line 24發帖GeoLocation中從JavaScript以PHP中使用餅乾

我的文件名是samepage.php,我想在此發佈相同的頁面。

我的代碼:

<html> 
<head> 
<title>Test Geo Location</title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script> 
function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showPosition); 
    } 
} 
function showPosition(position) { 
    document.getElementById("getlat").value = position.coords.latitude; 
    document.getElementById("getlon").value = position.coords.longitude; 
} 
$(document).ready(function() { 
$.cookie("data",{getlat:$("#getlat").val(),getlon:$("#getlon").val()}); 
}); 
</script> 
</head> 
<body onload="getLocation();"> 
<input type="text" id="getlat" name="getlat" value="<?php echo $_POST['polat']; ?>" /> 
<input type="text" id="getlon" name="getlon" value="<?php echo $_POST['polon']; ?>" /> 
<?php 
$data = json_decode($_COOKIE["data"]); 
$lat = $data["getlat"]; 
$lon = $data["getlon"]; 
?> 
</body> 
</html> 
+1

期待AJAX​​在不重新加載的情況下從JavaScript發佈到PHP – 2014-08-28 00:46:33

+0

在瀏覽器重新加載之前,cookie不會被設置。另外,除非您使用AJAX,否則PHP會在您的JavaScript之前執行。您可能還想使用'navigator.geolocation.watchPosition()',因爲客戶端可能會在每次觸發時顯示彈出詢問權限。 – PHPglue 2014-08-28 00:50:06

回答

0

有你需要確保幾件事情: 1)PHP代碼在服務器端運行; 2)javascript代碼在客戶端運行; 3)默認情況下,jQuery不支持cookie操作。請參閱相關內容question

4)在php json_decode函數中,會返回一個stdClass對象,而不是一個數組。請參閱json_decode

你需要做的是: 1)包括cookie的jQuery插件 2)設置的js函數的cookie,然後再調用PHP URL

我與你分享的修訂版,你會得到你期望什麼(你需要先下載jquery.cookie.js)。

<html> 
<head> 
<title>Test Geo Location</title> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
<script src="jquery.cookie.js"></script> 

<script> 
function getLocation() { 
    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(showPosition); 
    } 
} 
function showPosition(position) { 
    document.getElementById("getlat").value = position.coords.latitude; 
    document.getElementById("getlon").value = position.coords.longitude; 
} 

function doSubmit(){ 
    $.cookie("data",'{\"getlat\":' + $("#getlat").val() + ',\"getlon\":' + $("#getlon").val() + '}'); 
    document.form1.submit(); 
} 
$(document).ready(function() { 


}); 
</script> 
</head> 
<body onload="getLocation();"> 
<form name="form1"> 
<input type="text" id="getlat" name="getlat" value="<?php echo $_POST['polat']; ?>" /> 
<input type="text" id="getlon" name="getlon" value="<?php echo $_POST['polon']; ?>" /> 
<input type="button" value="submit" onclick = "doSubmit()"> 
</form> 
<?php 
$data = json_decode($_COOKIE["data"]); 
$lat = $data->getlat; 
$lon = $data->getlon; 
?> 
</body> 
</html>