如何使用AJAX刷新网站上的位置

时间:2018-04-11 13:49:36

标签: javascript jquery ajax

我有一个从MySQL数据库中读取的网站,并在地图上显示最新数据。如何在网站上每秒刷新一次数据?我需要将我的AJAX代码放入计时器吗?查询数据库的PHP脚本是否需要在计时器上?

var geojson;
$(document).ready(function () {
  var a = $(this).val();
  console.log(a)
  $.ajax({
    type: "POST",
    url: "b.php",
    async: false,
    data: {c: a},
    datatype: 'json',
    success: function (d) {
      var e = JSON.parse(d);
      geojson = e;
      new L.GeoJSON(e);
      L.geoJSON([e], {
        onEachFeature: onEachFeature,

        pointToLayer: function (feature, latlng) {
          return L.circleMarker(latlng, {
            fillColor: "#ff0505",
            fillOpacity: 1,
            radius: 5,
            weight: 1
          });
        }
      }).addTo(mymap);
    }
  })
});

2 个答案:

答案 0 :(得分:0)

我建议删除async:false选项,因为使用同步AJAX调用不是一个好习惯。

然后,您可以在执行请求之前跟踪时间,并在完成时,并相应地计算超时:

var func = function(){
    var interval=5000;
    var start = new Date();
    $.ajax({})
   .always(function(){
       var end = new Date();
       var timeout = interval - (end-start) 
       var timeout = timeout < 0 ? 0 : timeout;
       setTimeout(func, timeout);
   });
};
func();

您也可以使用lodash中的_.throttle

var func = _.throttle(function(){
   $.ajax({....})
   .always(function(){
      func(); 
   });
}, 5000);

func();

在上述两种情况下,请求将每5秒执行一次,或者在请求完成时执行(如果持续时间超过5次)。

答案 1 :(得分:-1)

您可以比较最新数据的数据并使用

import re

result = [[int(num) for num in match.groups()] for match in re.finditer(r'(\d+) (\d+)', text)]
# [[0, 1], [1, 5], [1, 8], [1, 10], [2, 5], [2, 7], [2, 4], [3, 4], [4, 9], [5, 6]]