функция возврата onClick и GeoLocation - PullRequest
0 голосов
/ 08 мая 2020

Я создаю веб-страницу для загрузки файла на сервер. перед загрузкой файла моя веб-страница собирает данные о геолокации пользователя. но функция "return GetLocation ()" не работает. мой код обходит код javaScript для получения GeoLocation. Вот мой код:

JavaScript:

    var x = document.getElementById("LocationStatus");

    function getLocation() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(showPosition);
        } else { 
            x.innerHTML = "Browser not supported!";
            return false;
        }
    }
    function showPosition(position) {
        x.innerHTML = "Latitude: " + position.coords.latitude + 
        "<br>Longitude: " + position.coords.longitude;
        document.cookie="lat="+position.coords.latitude+"lon="+position.coords.longitude;
        return true;
    }
    function error(msg) {
      var s = document.querySelector('#status');
      msg = msg.message ? msg.message : msg; 
      s.innerHTML = typeof msg == 'string' ? msg : "failed";
      s.className = 'fail';
      return false;
    }
</script>

HTML:

<form name="form" method="post" action="upload.php" enctype="multipart/form-data" >
    <input type="file" name="my_file" />
    <button type="submit" onclick="return getLocation()">Upload File</button>
</form>

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

Используйте onsubmit = "getLocation ()" вместо onclick и используйте его в элементе формы

<form  method="POST" onsubmit="getLocation()" action="upload.php" 
 enctype="multipart/form-data" >
<input type="file" name="my_file" />
<button type="submit">Upload File</button>
</form>

 function getLocation() {

    if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
    } else { 
        x.innerHTML = "Browser not supported!";
        return false;
    }
}
0 голосов
/ 08 мая 2020

Вы никогда не вызываете функцию, упоминая return в инструкции.

Измените свой код на

<button type="submit" onclick="callFunction();">Upload File</button>

Теперь ваша функция getLocation() будет вызывается.

И в вашем коде вы просто вызываете основную функцию, но функции в ней не вызываются

Попробуйте также вызвать их

<script>
function callFunction(){
getLocation();
showPosition(position);
error(msg);
}
 var x = document.getElementById("LocationStatus");

    function getLocation() {
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(showPosition);
        } else { 
            x.innerHTML = "Browser not supported!";

        }
         return false;
    }
    function showPosition(position) {
        x.innerHTML = "Latitude: " + position.coords.latitude + 
        "<br>Longitude: " + position.coords.longitude;
        document.cookie="lat="+position.coords.latitude+"lon="+position.coords.longitude;
        return false;
    }
    function error(msg) {
      var s = document.querySelector('#status');
      msg = msg.message ? msg.message : msg; 
      s.innerHTML = typeof msg == 'string' ? msg : "failed";
      s.className = 'fail';
      return true;
    }
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...