Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Cookies将地理位置从JavaScript发布到PHP_Javascript_Php_Ajax_Cookies - Fatal编程技术网

使用Cookies将地理位置从JavaScript发布到PHP

使用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

我正在尝试使用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="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>