2016-06-13 4 views
1

В настоящее время я работаю над проектом и не могу понять, как обновить запрос AJAX. На данный момент мой код работает нормально, я могу отобразить все маркеры, но я хочу обновить его каждые 5 секунд и получить новый! Под копией моего сценария я стараюсь использовать setInterval без успеха! Помощь по этому вопросу будет очень большой. еще раз спасибо.AJAX получить запрос, обновить каждые 5 секунд

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

     }); 

ответ

0

Вы пытались обернуть функцию 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? 
       }); 
      }); 
     } 
    }) 
} 
+0

спасибо за ваше время, ваша функция работает только при загрузке страницы и удалении загрузки маркера за 5 секунд после того, как ничего больше. любое обновление? –

+0

@riccardotrevisan извините, забыл добавить функцию на загрузку страницы. Добавлен 'update()' при загрузке. Это то, чего вы пытаетесь достичь? – Chay22

+0

Да, сейчас отлично работает. Спасибо 'Chay22', вы спасете мою жизнь. Реализуйте хороший помощник по работе. –

0

Использование setTimeout(function(){ alert("Hello"); }, 3000); функция для этого. Он выполнит эту функцию и после определенного времени перекомпостирует ее

+0

спасибо, Налин, ваше предложение хорошее, но предупреждает меня только первый раз, когда я загрузить страницу, а не каждые 3 секунды. Я делаю что-то неправильно? –

+0

На самом деле я заменяю setTimeout на setInterval и каждые 3 секунды всплываю приветствие, но не обновляю маркер –

Смежные вопросы