【发布时间】:2021-02-25 23:36:49
【问题描述】:
我正在使用 JavaScript 访问 Geolocation API 以获取设备的位置并将其设置为 HTML 表单输入元素的 value 属性。提交表单后,它将位置对象发布到脚本。我想使用 PHP 将对象存储在 SQL 数据库 (SQLite) 中。此外,我希望能够在将对象放入数据库之前或使用 PHP 将其从数据库中取回之后从对象内部访问信息。目前我无法将对象放入数据库或从中获取信息。
这里给出了我使用的(简化的)代码:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
echo '<p>'.$_POST['position'].'</p>';
}
?><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>HTML Template</title>
</head>
<body>
<form method='post'>
<div id='div1'>
</div>
<script>
const success = (position) => {
var input = document.createElement("input");
input.setAttribute("name", "position");
input.setAttribute("type", "text");
input.setAttribute("value", position);
var element = document.getElementById("div1");
element.appendChild(input);
}
var id = navigator.geolocation.getCurrentPosition(success);
</script>
<input type='submit' value='submit'>
</body>
</html>
当我在浏览器中运行它并允许共享我的位置时,它会创建一个包含 [object GeolocationPosition] 的输入字段。然后当我提交表单时,它会回显相同的 [object GeolocationPosition]。
如果我在将对象分配给表单输入的属性值之前使用 JavaScript“解包”对象,那么我可以在提交表单时将信息与 PHP 一起使用。然而,与将整个对象放入数据库相比,这似乎是一种复杂且容易出错的方法。
请多指教。
【问题讨论】:
标签: javascript php sql sqlite