Как использовать объект геолокации JavaScript, переданный в PHP из HTML-формы

#javascript #php #sql #sqlite

#javascript #php #sql #sqlite

Вопрос:

Я использую JavaScript для доступа к API геолокации, чтобы получить положение устройства и сделать его атрибутом значения элемента ввода формы HTML. Когда форма отправлена, она отправляет объект местоположения в скрипт. Я хочу использовать 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] в нем. Когда я затем отправляю форму, она выдает то же самое [объект GeolocationPosition].

Если я «распакую» объект с помощью JavaScript перед присвоением ему значения атрибута ввода формы, я смогу использовать информацию с помощью PHP при отправке формы. Однако это кажется сложным и подверженным ошибкам подходом по сравнению с помещением всего объекта в базу данных.

Я был бы признателен за некоторые указания, пожалуйста.

Ответ №1:

Похоже, что «GeolocationPosition» все еще является объектом. Запустите console.log("GeolocationPosition"); , чтобы вернуть все его свойства в консоль.

Например, если вы пытаетесь получить, допустим, широту, которую вы могли бы использовать GeolocationPosition["lat"] (если свойство «lat» существует)

Комментарии:

1. Я могу получить данные из объекта, если использую console.log() или другой javascript. Я не могу получить данные из объекта, когда я использую PHP. Я хочу использовать PHP для доступа к объекту после его отправки обратно в мой скрипт.