将JavaScript获得的地理位置传递到HTML表单中以发送到数据库

将JavaScript获得的地理位置传递到HTML表单中以发送到数据库,javascript,php,html,Javascript,Php,Html,我试图获取用户的当前位置,并将其存储在一个隐藏的输入中,这样,一旦他们填写完表单,他们的位置将与其他所有内容一起发送到要存储的数据库 我遇到的问题是php上的未定义索引,这使我相信坐标没有发送到输入 我查阅了其他关于同一主题的帖子,但没有找到我问题的答案 这是我的HTML表单(div仅用于显示坐标): PHP: 为了确保您必须使用Ajax和jquery不确定这是否会解决您的问题,但是我非常确定您需要在HTML中为每个字段指定一个名称,然后将它们链接到PHP,而不是使用ID 例如,您的HTML将

我试图获取用户的当前位置,并将其存储在一个隐藏的输入中,这样,一旦他们填写完表单,他们的位置将与其他所有内容一起发送到要存储的数据库

我遇到的问题是php上的未定义索引,这使我相信坐标没有发送到输入

我查阅了其他关于同一主题的帖子,但没有找到我问题的答案

这是我的HTML表单(div仅用于显示坐标):

PHP:



为了确保您必须使用Ajax和jquery

不确定这是否会解决您的问题,但是我非常确定您需要在HTML中为每个字段指定一个名称,然后将它们链接到PHP,而不是使用ID

例如,您的HTML将类似于

  <input name="LATPOSNAME" type="hidden" id="geoPosLat" value ="" />
PHP使用元素的name属性
name=“unique name here”
value作为键,以便在提交表单时访问指定表单字段元素的数据值


如果您不声明名称,那么您的PHP将无法获取您的值,因为没有键。这意味着您无法在表单提交到服务器后访问该元素表单数据值,因为它的键未定义。

对于
您需要设置
.value
,而不是
.innerHTML
。哦,我怎么会错过这个。。。非常感谢。这并没有解决问题。我将把我的php添加到帖子中,因为那里可能也有问题。$\u post键由输入的
name
属性决定。您只有一个名为
的输入。
。可能与我尝试不使用jquery的输入重复。但是我可以做AJAx。谢谢你,好的。使用jquery,更简单!!鉴于这个名称,它应该是
$\u POST[“LATPOSNAME”]
;我猜你的意思是
name=“geoPosLat”
Cheers@ChrisG我把它复制过来后忘记编辑了。编辑了我的答案。
function init(){

//Get user's geolocation
if(navigator.geolocation)
{
    navigator.geolocation.watchPosition (processPosition, handleError, {enableHighAccurary:true, maximumAge: 5000});

}
else
{
    alert("Sorry, geolocation not supported");
}

}


// Process GPS Information
function processPosition(gpspos)
{
var latGPS = gpspos.coords.latitude;
    var lonGPS = gpspos.coords.longitude;

//Show their location
document.getElementById("latGPS").innerHTML = 'Latitude: ' + latGPS;
document.getElementById("lonGPS").innerHTML = 'Longitude: ' + lonGPS;

//store location 
document.getElementById("geoPosLat").innerHTML = latGPS;
document.getElementById("geoPosLon").innerHTML = lonGPS;
}

function handleError(err)
{
alert ('An error occurred: ' + err.code);
 }
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$aPoiName = $_POST["addPoiName"];
$aPoiCountry = $_POST["addPoiCountry"];
$aPoiRegion = $_POST["addPoiRegion"];
$aPoiType = $_POST["addPoiType"];
$aPoiDescription = $_POST["addPoiDescription"];
$lat = $_POST["geoPosLat"];
$lon = $_POST["geoPosLon"];


// Curl -----------------
// Initialize
$connection = curl_init();

//URL to sned the request to
curl_setopt($connection, CURLOPT_URL, 'https://example.php');

$dataToPost=
[   "Name" => $aPoiName ,
    "Country" => $aPoiCountry ,
    "Region" => $aPoiRegion , 
    "Type" => $aPoiType ,
    "Description" => $aPoiDescription,
    "Lat" => $lat,
    "Lon" => $lon
];
//Execute the request 
curl_setopt($connection,CURLOPT_RETURNTRANSFER, 1);
curl_setopt($connection,CURLOPT_POSTFIELDS,$dataToPost);
$response = curl_exec($connection);

//HTTP CODE
$httpCode = curl_getinfo($connection, CURLINFO_HTTP_CODE);
echo "The script returned the HTTP status code: $httpCode <br />";
//close 
curl_close($connection);

?>
  <input name="LATPOSNAME" type="hidden" id="geoPosLat" value ="" />
$lat = $_POST["LATPOSNAME"];