为了账号安全,请及时绑定邮箱和手机立即绑定

使用 setInterval 的 Ajax 调用不会从数据库中获取新数据

使用 setInterval 的 Ajax 调用不会从数据库中获取新数据

PHP
哆啦的时光机 2023-03-04 14:20:16
我正在做一个项目,我需要在给定时间间隔后根据日期和时间显示用户详细信息。我正在使用下面的代码,但它不符合我的要求。$(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});ajax 函数在给定时间间隔后调用,但它不会从数据库中获取新数据。例如,如果在第一次调用期间数据库中有三个条目,而在给定时间间隔之后,第二次调用也只获取三个条目,即使有五个条目。如何我是否更改代码以获得预期结果。
查看完整描述

1 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

您传递给 ajax 调用的数据似乎存在问题。比如开始日期和结束日期。


请尝试以下示例:


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);

  }

});


查看完整回答
反对 回复 2023-03-04
  • 1 回答
  • 0 关注
  • 160 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号