Ajax вызов с setInterval не извлекает новые данные из базы данных - PullRequest
1 голос
/ 07 мая 2020

Я работаю над проектом, в котором мне нужно отображать сведения о пользователях в зависимости от даты и времени после заданного интервала. Я использую приведенный ниже код, но он не работает в соответствии с моими требованиями.

$(document).ready(function () {
  $.ajax({
    type: "Post",
    url: "<?php echo site_url('registrationc/map')?>",
    // data: "unit_id="+unitid,
    data: { startDate: startdate, endDate: enddate, status: status },
    success: function (data) {
      marker(data);
    },
  });
  refresh();
});

function refresh() {
  setInterval(function () {
    $.ajax({
      type: "Post",
      url: "<?php echo site_url('registrationc/map')?>",
      // data: "unit_id="+unitid,
      data: { startDate: startdate, endDate: enddate, status: status },
      success: function (data) {
        alert("success 2");
        alert(data);
        marker(data);
      },
    });
  }, 30000);
}

function marker_map(data){
    var locations=JSON.parse(data);
    alert(data);
    var map = new google.maps.Map(document.getElementById('map'), {
      zoom: 6,
      center: new google.maps.LatLng(20.5937,78.9629),//{ lat: 20.5937, lng: 78.9629 }
      mapTypeId: google.maps.MapTypeId.ROADMAP//HYBRID //SATELLITE//TERRAIN
    });

    var marker, i;
    //var contentString ='<div id="iw-container"><div class="iw-title" align="center"></div>';
    for (i = 0; i < locations.length; i++) 
    { 
        var url="http://maps.google.com/mapfiles/ms/icons/";
        if(locations[i]['status']=="green")
        {
            url+="green"+"-dot.png";
        }
        else if(locations[i]['status']=="yellow")
        {
            url+="yellow"+"-dot.png";
        }
        else if(locations[i]['status']=="orange")
        {
            url+="orange"+"-dot.png";
        }
        else
        {
            url+="red"+"-dot.png";
        }
    marker = new google.maps.Marker({
    position: new google.maps.LatLng(locations[i]['lat'], locations[i]['longi']),
    icon:{url:url},
    map: map});

    var land=locations[i][1];
    var contentString = '<div id="content">'+
     '<div class="iw-title">Patients Details</div>'+
      '<h5 id="firstHeading" class="firstHeading">Patients Details</h5>'+
      '<div id="bodyContent">'+
      '<p>'+
      '<p>Attribution: Uluru'+
      '</p>'+
      '</div>'+
      '</div>';
      google.maps.event.addListener(marker, 'click', (function(marker, i) {
    var content = '<div id="iw-container">' +
                    '<div class="iw-title">'+locations[i]['firstname']+'</div>' +
                    '<div class="iw-content">' +
                      '<div class="iw-subTitle">STATUS:'+locations[i]['status']+'</div>' +
                      '<div class="iw-subTitle">PERSONAL DETAILS</div>'+
                      '<h6>Age:'+locations[i]['age']+'</h6>'+
                      '<h6>Gender:'+locations[i]['gender']+'</h6>'+
                    '</div>' +
                    '<div class="iw-bottom-gradient"></div>' +
                  '</div>';  
    var infowindow = new google.maps.InfoWindow({content:content});

        return function() {
          //infowindow.setContent(locations[i][0]);
          infowindow.open(map, marker);
          //marker.setIcon('http://maps.google.com/mapfiles/ms/icons/blue-dot.png');
        }
      })(marker, i));
    }
}

* Функция 1005 * вызывается через заданный интервал времени, но она не извлекает новые данные из базы данных. Например, если есть три записи в базе данных во время 1-го вызова, а затем после заданного интервала 2-й вызов также извлекает только три записи, даже если есть пять записей. как мне изменить код, чтобы получить ожидаемый результат.

1 Ответ

1 голос
/ 07 мая 2020

Проблема связана с данными, которые вы передаете на ajax call. Как дата начала и дата окончания.

Попробуйте пример ниже:

function getStats() {
  var today = new Date();
  var time = today.getHours() + ":" + today.getMinutes();
  var time1 = " 00:00";
  var status = "all";
  var today = new Date();
  var dd = String(today.getDate()).padStart(2, "0");
  var mm = String(today.getMonth() + 1).padStart(2, "0"); //January is 0!
  var yyyy = today.getFullYear();
  var startdate = yyyy + "-" + mm + "-" + dd + "" + time1;
  var enddate = yyyy + "-" + mm + "-" + dd + " " + time;
  return { startdate, enddate, status };
}
$(document).ready(function () {
  let { startdate, enddate, status } = getStats();
  $.ajax({
    type: "Post",
    url: "<?php echo site_url('registrationc/map')?>",
    data: { startDate: startdate, endDate: enddate, status: status },
    success: function (data) {
      marker(data);
    },
  });
  refresh();
  function refresh() {
    setInterval(function () {
      let { enddate } = getStats();
      $.ajax({
        type: "Post",
        url: "<?php echo site_url('registrationc/map')?>",
        data: { startDate: startdate, endDate: enddate, status: status },
        success: function (data) {
          marker(data);
        },
      });
    }, 30000);
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...