【问题标题】:AJAX get request, refresh every 5 secondAJAX 获取请求,每 5 秒刷新一次
【发布时间】:2016-10-14 10:14:18
【问题描述】:

我目前正在处理一个项目,但不知道如何刷新 AJAX 请求。 目前我的代码工作正常,我可以显示所有标记,但我想每 5 秒刷新一次并接收新的! 在我的脚本副本下面,我尝试使用 setInterval 没有成功喷射! 这方面的帮助将非常棒。 再次感谢。

var gMapsLoaded = false;
window.gMapsCallback = function(){
    gMapsLoaded = true;
    $(window).trigger('gMapsLoaded');
}
window.loadGoogleMaps = function(){
    if(gMapsLoaded) return window.gMapsCallback();
    var script_tag = document.createElement('script');
    script_tag.setAttribute("type","text/javascript");
    script_tag.setAttribute("src","http://maps.google.com/maps/api/js?sensor=false&callback=gMapsCallback");
    (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
}


$(document).ready(function(){
    function initialize(){
        var mapOptions = {
            zoom: 18,
            center: new google.maps.LatLng(51.5207239719, -0.182568696184),
            mapTypeId: google.maps.MapTypeId.ROADMAP};
        map = new google.maps.Map(document.getElementById('map_canvas'),mapOptions);
    }
    $(window).bind('gMapsLoaded', initialize);
    window.loadGoogleMaps();
});

$(window).load(function update () {


    $.ajax({
        url: 'get-last.php',
        success:function(data){
            //Loop through each location.
            $.each(data, function(){
                //Plot the location as a marker
                var pos = new google.maps.LatLng(this.latitude, this.longitude);
                new google.maps.Marker({
                    position: pos,
                    map: map
                });




            });
        } ,  complete: function() {
      setInterval(update, 1000);
        }

      });

【问题讨论】:

    标签: javascript jquery ajax refresh


    【解决方案1】:

    为此使用setTimeout(function(){ alert("Hello"); }, 3000); 函数。 它将执行该函数并在特定时间后重新计算它

    【讨论】:

    • 谢谢,Nalin,您的建议很好,但仅在我第一次加载页面时提醒我,而不是每 3 秒一次。我做错了什么吗?
    • 实际上我用 setInterval 替换了 setTimeout 并且每 3 秒弹出一个问好但不刷新标记
    【解决方案2】:

    您是否尝试过将 update() 函数包装在 setInterval() 中,而不是在完成回调时执行此操作?我也看不到你在哪里定义map变量

    $(window).load(function(){
        update()
        setInterval(function(){
            update()
        }, 5000)
    })
    
    function update(){
        $.ajax({
            url: 'get-last.php',
            success:function(data){
                //Loop through each location.
                $.each(data, function(){
                    //Plot the location as a marker
                    var pos = new google.maps.LatLng(this.latitude, this.longitude);
                    new google.maps.Marker({
                        position: pos,
                        map: map //is this been set globally?
                    });
                });
            }
        })
    }
    

    【讨论】:

    • 感谢您的宝贵时间,您的功能仅在我加载页面并删除标记加载 5 秒后才有效。有更新吗?
    • @riccardotrevisan 抱歉忘记在页面加载时添加该功能。在加载时添加了update()。这就是你想要达到的目标吗?
    • 是的,现在工作得很好。谢谢'Chay22'你救了我的命。真的很好的工作伙伴。
    猜你喜欢
    • 2014-10-16
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多