2016-06-13 2 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'너는 내 생을 구해 줬어. Realy 좋은 직장 동료. –

0

사용 setTimeout(function(){ alert("Hello"); }, 3000); 기능. 함수를 실행 한 다음 특정 시간이 지나면 다시 실행합니다.

+0

감사 Nalin을 정의 났어 귀하의 제안이 좋은, 볼 수 있지만 내게 페이지가 아닌 3 초마다로드 첫 번째 시간을 경고한다. 내가 뭐 잘못하고 있는거야? –

+0

실제로 setTimeout을 setInterval로 바꿉니다. 매 3 초마다 팝업이 나타나지만 마커를 새로 고치지 않습니다. –

관련 문제