Отправка значений от Js до PHP - PullRequest
0 голосов
/ 30 марта 2020

Я спрашиваю местоположение пользователя при загрузке страницы и задаю для него скрытые поля и пытаюсь прочитать его с php. Код JS работает, но когда я отображаю его на php, он показывает нулевое значение, а после вывода «значения» он продолжает перезагружать всю страницу.

<script>
    var x = document.getElementById(\"latitude\");
    var y = document.getElementById(\"longitude\");
    var a;
    function getLocation()
    {
        if (navigator.geolocation)
        {
            navigator.geolocation.getCurrentPosition(showPosition);
        } else
        {
            x.innerHTML = \"Geolocation is not supported by this browser.\";
        }
    }

    function showPosition(position)
    {
        x.value = position.coords.latitude; 
        y.value= position.coords.longitude;
        submitform();
    }
    function submitform()
    {
        document.forms[\"locform\"].submit();
        console.log(\"Value is sumitted\");
    }
    getLocation();
    </script>

<form action='abc.com/list' id='locform' method='get'>
    <input type='hidden' id='latitude' name='latitude'>
    <input type='hidden' id='longitude' name='longitude'>
</form>

$users_postal=$_GET['latitude'];
echo($users_postal);

1 Ответ

0 голосов
/ 31 марта 2020

Проблема в том, что ваш код javascript выполнен до загрузки страницы. Вы должны дождаться загрузки всего HTML, а затем выполнить код js.

Этого можно добиться, добавив форму изменения и позиции тега скрипта. Точно напишите свой js после HTML кода.

<form action='abc.com/list' id='locform' method='get'>
   <input type='hidden' id='latitude' name='latitude'>
   <input type='hidden' id='longitude' name='longitude'> 
</form>
<script>
   // you js code here
</script>

/then write PHP code
$users_postal=$_GET['latitude'];
echo($users_postal);
...