Bild nachladen

funkspiel-fritteng

Grünschnabel
Hallo,

ich habe diesen Codeteil im Internet gefunden um ein Bild bei änderung neu zu laden.
HTML:
<html><head>
<title>test</title>
<script type="text/javascript">
<!--
var timestamp = 0;
function ajax()
{
try {
req = window.XMLHttpRequest?new XMLHttpRequest():
new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {

}

req.onreadystatechange = function() {
if ((req.readyState == 4) && (req.status == 200)) {
var feedback = req.responseText;
var update = new Array();
var Now = new Date();

update = feedback.split('||');
if(timestamp < update[0]) {
timestamp = update[0];
document.getElementById('live').src = update[1];
document.getElementById('debugger').innerHTML += Now.toLocaleString() + ': Bild aktualisiert<br />';
} else {
document.getElementById('debugger').innerHTML += Now.toLocaleString() + ': Kein Update verfügbar<br />';
}


setTimeout("ajax()", 1000);
}
}
req.open('get', 'status.php');
req.setRequestHeader("Pragma","no-cache");
req.setRequestHeader("Cache-Control","must-revalidate");
//req.setRequestHeader("If-Modified-Since","Sat, 1 Jan 2000 00:00:00 GMT");
req.send(null);
}
//-->
</script>
</head>
<body onload="ajax()">

<img id="live" src="img/test.gif" alt="Webcam" />
<div id="debugger" style="position:absolute;right:0px;top:0px;height:100%;width:400px;font-size:11px;background-color:#ffbbbb"></div>

</body>
</html>

nur leider weiß ich nicht was genau das PHP Script ausgeben soll.
Gebe ich nur den Timestamp des Bildes aus erkennt das Script zwar ein Update, setzt den Bild dateinamen aber auf undefined.

PHP:
<?php 
$time = filectime("img/test.gif");
echo $time;
?>

Wi sollte das PHP script denn nun aussehen ?
 
Hallo,

die JavaScript-Funktion im onreadystatechange-Event spaltet zuerst die zurückgegebenen Daten anhand eines "vertikelen Strichs" ('|') und prüft ob der letzte Timestamp der Datei (am Anfang 0) kleiner als der zurückgegebene Timestamp ist. Also ob das Bild aktualisiert wurde bzw. das PHP-Skript einen größeren Timestamp zurückgibt.
Und falls es aktueller ist, wird der aktuelle Timestamp (timestamp) auf den zurückgegebenen gesetzt und die Bildquelle auf den Teil nach den zweiten Teil des Rückgabetextes (bzw. nach dem '|') gesetzt.

Das PHP-Skript könnte z.B. so auscchauen:
PHP:
<?php
$src = 'img/test.gif');
$time = filectime($src);

echo $time.'|'.$src;
?>

PS: Bitte 'push' den Thread wenn schon erst nach ein paar Tagen und nicht direkt am nächsten Tag ;)
 
Hm... das PHP Script funktioniert (klar), nur leider erkennt das JavaScript kein Update sobald ich die Grafik Update. Das PHP Script erkennt aber einen neuen TimeStamp
 

Neue Beiträge

Zurück