使setInterval()工作一秒钟循环

时间:2016-05-12 18:41:07

标签: javascript setinterval

我有以下功能:

function successFunction(position) {
            var lat = position.coords.latitude;
            var lng = position.coords.longitude;
             var url= '<?php echo url("/") ?>/provider/location/set?lat='+lat+'&lng='+lng;
             console.log(url);
             $.ajax({
                  type: 'get',
                  url: '<?php echo url("/") ?>/provider/location/set?lat='+lat+'&lng='+lng,
                  success: function (msg) {
                    console.log("Location captured");
                  },
                  processData: false,
              });                  
        }

它的作用是发送已打开该特定页面(tab)的用户的当前地理定位。这是整个脚本:

<script type="text/javascript">
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(successFunction);
        } else {
            alert('Parece que la Geolocalización, la cual se requiere para esta página, no está habilitado en su navegador. Por favor, utilice un navegador que lo soporta o active la opción.');
        }
        function successFunction(position) {
            var lat = position.coords.latitude;
            var lng = position.coords.longitude;
             var url= '<?php echo url("/") ?>/provider/location/set?lat='+lat+'&lng='+lng;
             console.log(url);
             $.ajax({
                  type: 'get',
                  url: '<?php echo url("/") ?>/provider/location/set?lat='+lat+'&lng='+lng,
                  success: function (msg) {
                    console.log("Location captured");
                  },
                  processData: false,
              });                  
        }

      </script>

糟糕的是它只在用户不断刷新页面时发送。我一直试图让它每秒循环,以便GEO实时发送并且可以跟踪用户(这是用于汽车地理定位)。有没有办法可以实时发送信息,或者我如何使SetInterval工作?这就是我所拥有的,但它不起作用:

window.setInterval(successFunction, 1000);

2 个答案:

答案 0 :(得分:3)

这个怎么样?

setInterval(function(){
   navigator.geolocation.getCurrentPosition(successFunction);
}, 1000);

答案 1 :(得分:1)

你必须添加一个无关的回调来用一些参数调用实际函数。

if (navigator.geolocation) {
        window.setInterval(function(){
          navigator.geolocation.getCurrentPosition(successFunction);
        }, 1000);

    } else {
        alert('Parece que la Geolocalización, la cual se requiere para esta página, no está habilitado en su navegador. Por favor, utilice un navegador que lo soporta o active la opción.');
    }
    function successFunction(position) {
        var lat = position.coords.latitude;
        var lng = position.coords.longitude;
         var url= '<?php echo url("/") ?>/provider/location/set?lat='+lat+'&lng='+lng;
         console.log(url);
         $.ajax({
              type: 'get',
              url: '<?php echo url("/") ?>/provider/location/set?lat='+lat+'&lng='+lng,
              success: function (msg) {
                console.log("Location captured");
              },
              processData: false,
          });                  
    }