使用Cookies将地理位置从JavaScript发布到PHP
我正在尝试使用Cookies将位置坐标从JavaScript发送到PHP,并在第24行收到通知使用Cookies将地理位置从JavaScript发布到PHP,javascript,php,ajax,cookies,Javascript,Php,Ajax,Cookies,我正在尝试使用Cookies将位置坐标从JavaScript发送到PHP,并在第24行收到通知Notice:Undefined index:data in/Applications/XAMPP/xamppfiles/htdocs/samepage.PHP 我的文件名是samepage.php,我想把它发布在同一页上 我的代码: <html> <head> <title>Test Geo Location</title> <script src
Notice:Undefined index:data in/Applications/XAMPP/xamppfiles/htdocs/samepage.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>
测试地理位置
函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(showPosition);
}
}
功能显示位置(位置){
document.getElementById(“getlat”).value=position.coords.latitude;
document.getElementById(“getlon”).value=position.coords.longitude;
}
$(文档).ready(函数(){
$.cookie(“数据,{getlat:$(“#getlat”).val(),getlon:$(“#getlon”).val());
});
您需要确保以下几点:
1) php代码在服务器端运行;
2) javascript代码在客户端运行;
3) 默认情况下,jQuery不支持cookie操作。请参阅相关资料
4) 在php json_解码函数中,将返回stdClass对象,而不是数组。请看
您需要做的是:
1) 包含cookiejQuery插件
2) 首先通过js函数设置cookie,然后调用php URL
我与您共享一个修订版,您将得到您所期望的(您需要先下载jquery.cookie.js)
测试地理位置
函数getLocation(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(showPosition);
}
}
功能显示位置(位置){
document.getElementById(“getlat”).value=position.coords.latitude;
document.getElementById(“getlon”).value=position.coords.longitude;
}
函数doSubmit(){
$.cookie(“数据”、“{\'getlat\”:”+$(“{\'getlat”).val()+”、“'getlon\”:”+$(“{\'getlon”).val()+');
文件。表格1。提交();
}
$(文档).ready(函数(){
});
查看AJAX,以便在不重新加载的情况下从JavaScript发布到PHP。只有在浏览器重新加载后,才会设置cookie。此外,PHP在JavaScript之前执行,除非您使用的是AJAX。您可能还想使用navigator.geolocation.watchPosition()
,因为客户端可能会在每次触发时显示一个请求权限的弹出窗口。
<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>