2016-06-13 12 views
1

Ich arbeite gerade an einem Projekt und kann nicht wirklich herausfinden, wie man die AJAX Anfrage aktualisiert. Im Moment funktioniert mein Code gut, ich kann den ganzen Marker anzeigen, aber ich möchte ihn alle 5 Sekunden aktualisieren und den neuen erhalten! Unter einer Kopie meines Skripts versuche ich setInterval ohne Erfolg Jet zu verwenden! Hilfe dazu wird wirklich toll. danke nochmal.AJAX Anfrage bekommen, alle 5 Sekunden aktualisieren

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

     }); 

Antwort

0

Haben Sie versucht, die update() Funktion innerhalb setInterval() zu wickeln, anstatt es auf vollständigen Rückruf zu tun? Ich kann auch nicht sehen, wo hast du map Variable

$(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

Dank für Ihre Zeit, funktioniert Ihre Funktion nur, wenn ich die Seite laden und löschen die Marker laden für 5 Sekunden nach als nichts mehr. irgendein Update? –

+0

@riccardotrevisan Entschuldigung vergessen, die Funktion beim Laden der Seite hinzuzufügen. 'Update()' beim Laden hinzugefügt. Wollen Sie das erreichen? – Chay22

+0

Ja, jetzt funktioniert es großartig. Danke 'Chay22' du rettest mein Leben. Wirklich nette Arbeitskollegin. –

0

Verwenden Sie hierzu die Funktion setTimeout(function(){ alert("Hello"); }, 3000);. Es wird die Funktion ausführen und nach einer bestimmten Zeit neu berechnen

+0

dank definieren, Nalin, Ihr Vorschlag ist gut, aber mir ist alarmiert nur das erste Mal, dass ich die Seite zu laden, nicht alle 3 Sekunden. Bin ich etwas falsch? –

+0

tatsächlich ersetzen ich setTimeout mit setInterval und alle 3 Sekunden ein Pop-up sagen hallo aber nicht die Markierung –

Verwandte Themen