【问题标题】:How to use JavaScript geolocation object passed to PHP from an HTML form如何使用从 HTML 表单传递给 PHP 的 JavaScript 地理定位对象
【发布时间】: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


    【解决方案1】:

    看起来“GeolocationPosition”仍然是一个对象。运行console.log("GeolocationPosition"); 以在控制台中返回它的所有属性。

    例如,如果您要获取,假设您可以使用GeolocationPosition["lat"] 的纬度(如果属性“lat”存在)

    【讨论】:

    • 如果我使用 console.log() 或其他 javascript,我可以从对象中获取数据。当我使用 PHP 时,我无法从对象中获取数据。一旦对象被发布回我的脚本,我想使用 PHP 来访问它。
    猜你喜欢
    • 2015-06-07
    • 2014-02-22
    • 1970-01-01
    • 2022-01-05
    • 2016-04-02
    • 2018-10-25
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    相关资源
    最近更新 更多