Ik ben bezig om google maps op de een website te krijgen. Ik heb dit inmiddels al voor elkaar. Het is de bedoeling dat een bezoeker zijn postcode en land ingeeft. Google Maps zorgt er dan voor dat de uitvoer op de kaart wordt vertoond. Dit gebeurt aan de hand van een xml file.
De eerste keer gaat het goed en worden de resultaten goed vertoond. Zodra er een nieuwe aanvraag wordt gedaan krijg ik hetzelfde resultaat. Alleen met een ander centerpoint in google maps. Het probleem zit alleen in internet explorer, Firefox doet het goed daar zie ik geen probleem.

Wie heeft al eens gehad en kan me helpen dat de xml file wordt overschreven in IE.

alvast dank
Waarschijnlijk haalt IE die xml uit de cache, aangezien je de zelfde url aanroept.

Wat je kan doen, is een dummy GET variabele toevoegen die telkens een andere waarde heeft.
Dan is dus de url verschillend van de vorige waardoor niet in de cache wordt gezocht.

Zet ergens een javascript variable globaal.
Bij het aanroepen doe je dan bv. zo-iets:


...
var globale_var = 0;
...
var url = "files/mijn_xml.xml?dummy="+ globale_var++;
...
// aanroepen xml file


Zie eens of dat werkt.
Deze oplossing kan trouwens dienen voor andere Ajax requests / images die je per se niet in de cache wil zoeken, ...
Helaas werkt het niet mij. Misschien implementeer ik het fout. Het ziet er wel logisch uit.


var globale_var = 0;
var url = "data.xml?dummy="+ globale_var++;

GDownloadUrl(url, function(data, responseCode){



We moeten natuurlijk wel zien dat die ++ wordt uitgevoerd.
Kan je de wat meer code posten?
Dat begrijp ik

zie onderstaande code
            
            function initialize() {
              if (GBrowserIsCompatible()) {
                var map = new GMap2(document.getElementById("map_canvas"));
                map.setCenter(new GLatLng({/literal}{$aDLCenterGoogle.lat}, {$aDLCenterGoogle.lon}{literal}), 9);
                map.setUIToDefault();
                
                function createMarker(point, number, html) {
                      var marker1 = new GMarker(point);
                      var message = ["This","is","the","secret","message"];
                      marker1.value = number;
                      GEvent.addListener(marker1, "click", function() {
                        var myHtml = html;
                        map.openInfoWindowHtml(point, myHtml);
                      });
                      return marker1;
                }
                
                
                var globale_var = 0;
                var url = "data.xml?dummy="+ globale_var++;

                GDownloadUrl(url, function(data, responseCode){
                  var xml = GXml.parse(data);
                  var markers = xml.documentElement.getElementsByTagName("marker");
                  for (var i = 0; i < markers.length; i++) {
                    var latlng = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                            parseFloat(markers[i].getAttribute("lng")));
                      
                   var html = markers[i].getAttribute("html");
          
                    map.addOverlay(createMarker(latlng, i + 1, html));
                  }
                });
              }
            }


[size=xsmall]Toevoeging op 03/02/2011 10:42:24:[/size]

Naar aanleiding van Kris zijn optie heb ik een oplossing gevonden. in plaats van een tellertje te maken heb ik de timestamp van javascript gebruikt. Door de verversing van de pagina bleef de teller altijd op nul staan. Een timestamp doet dat niet.


  var time = new Date();
                var url = "data.xml?"+time;
                 
                GDownloadUrl(url, function(data, responseCode){


Kris bedankt voor je aanzet.
Globaal betekent dus dat het buiten elke functie moet staan.

// boven function initialize()
var globale_var = 0;

// binnen function initialize()
var url = "data.xml?dummy="+ globale_var++;

Edit:
Of een time stamp of random of zo ...
Kan inderdaad ook.

Reageren