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