Hallo zusammen. Ich weiß, es ist Weihnachten, aber vielleicht ist ja doch einer da, der mir das erklären kann
Der Code, also die wichtigen Bestandteile...
function AjaxRequest(uri,callback)
{
var request = new XMLHttpRequest;
request.onreadystatechange = function()
{
if (request.readyState == 2)
{
requestJetzt = new Date().getTime();
console.log('jetzt5 '+requestJetzt);
}
if (request.readyState == 4)
{
request.onreadystatechange = doNothing;
if(request.status === 200)
{
callback(request.responseText);
}
}
};
request.open('GET', uri, true);
request.send(null);
};
function sync()
{
AjaxRequest('/sync.php', function(data)
{
var serverTime = JSON.parse(data);
offset = requestJetzt - serverTime;
console.log(offset);
document.getElementById("offset").innerHTML = Trenner(offset);
});
}
function resync ()
{
AjaxRequest('/sync.php', function(data)
{
var serverTime = JSON.parse(data);
offset = requestJetzt - serverTime;
console.log('resync '+offset);
console.log('requestJetzt '+requestJetzt);
document.getElementById("offset").innerHTML = Trenner(offset+' vvvvvvv');
});
}
Alles anzeigen
So, das Problem:
Rufe ich sync() auf, dann geht alles wunderbar. Die Logs in der Console kommen, der Wert im HTML wird ersetzt.
Rufe ich danach resync() auf, dann wird es komisch. sync.php wird abgerufen und auch vollständig übertragen. Aber sämtliche Log-Einträge fehlen und der HTML-Wert wird nicht ersetzt. Verstehe ich schon mal gar nicht, denn die Funktion AjaxRequest ist ja die gleiche, die vorher noch Logeinträge geschrieben hat. Auch sync und resync sind im Grunde identisch.
So, gehe ich nun her und kopiere die Funktion AjaxRequest und erzeuge daraus eine neue AjaxRequestNEU, also identische Funktionen, nur verschiedene Namen und ändere gleichzeitig in resync() den Funktionsaufruf auf AjaxRequestNEU, dann geht alles !?!?! Dann kann ich sync aufrufen und danach so oft ich will auch resync. Alles läuft dann normal.
Nur warum?