2014-08-28 29 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>