automatsiche Relaod von php dateien

xxxmike

Erfahrenes Mitglied
Habe hier schon ohne ende gesucht, aber so richtig wurde ich leider nicht fündig:

Ich include in php Dateien die aus einer Datenbank gerufen werden:

Ich möchte das sich diese alle 10 Sekunden oder so neu laden, aber jedoch ohne das man es merkt. Das heißt dann per Ajax oder so. Wie kann ich das am besten machen.

Danke für jeden TIPP
 
Hi,

mit AJAX ist es möglich, Requests zu senden. Ziel einer solchen Anfrage kann ein Skript sein, dass eine Datenbankabfrage durchführt und die gewünschten Daten zurückgibt.

Soll das ganze periodisch erfolgen, kann auf der Clientseite mit Hilfe der Methode setInterval die AJAX-Routine nach Ablauf eines Zeitintervalls erneut aufgerufen werden.

Das folgende Beispiel demonstriert die prinzipielle Vorgehensweise.

Clientseitiges Dokument:
Code:
<html>
<head>
<title>www.tutorials.de</title>
<meta name="author" content="Quaese">
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
  <!--
var objRequest = false;

function instanceRequest(){
  if(window.XMLHttpRequest){
    objRequest = new XMLHttpRequest();
  }else if(window.ActiveXObject){
    try{
     objRequest = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
      try{
      	objRequest = new ActiveXObject("Microsoft.objRequest");
      }catch(e){}
    }
  }

  if(!objRequest){
    alert('Es konnte keine XMLHTTP-Instanz erzeugt werden!');
    return false;
  }
}


function theRequest() {
  // Falls noch ein Request-Objekt existiert -> zunächst beenden
  if(objRequest && objRequest.readyState){
    objRequest.abort();
    objRequest = false;
  }

  if(!objRequest){
    instanceRequest();
  }

  objRequest.open('GET', 'xmlhttp_request_dummy.php', true);

  self.objRequest.onreadystatechange = function(){
    if(objRequest.readyState == 4){
      if(objRequest.status == 200){
        document.getElementById("outID").innerHTML = unescape(objRequest.responseText);
      }else{
        alert("Anfrage nicht erfolgreich!");
      }
    }
  }
  objRequest.send(null);
}

window.onload = function(){
	hTimer = window.setInterval(function(){theRequest();}, 1000);
}
 //-->
</script>
</head>
<body>
<div id="outID"></div>
</body>
</html>
Serverseitiges Dokument:
Code:
<?php
// TODO: Datenbankabfrage und Rückgabe erstellen

// Rückgabe hier: Zeit
echo(rawurlencode(date("H:i:s", mktime())));
?>
Statt einer Datenbankabfrage wird hier die aktuelle Zeit ermittelt und ins Rückgabedokument geschrieben. Das Prinzip ist jedoch das gleiche.

Ciao
Quaese
 
Erst mal DANKE, nur leider geht das nur bei Firefox, jedoch nicht beim Explorer oder Opera. Gibts da noch einen Trick?
 
Der Text wird zwar bei allen 3 Browsern geladen, aber aktualisiert wird dieser nur im Firefox. Beim Explorer und beim Opera bleibt der erste Text stehen.

Warum nur das?
 
Hi,

häng mal an die Request-URL einen Zeitstempel an - eventuell handelt es sich um ein Caching-Problem:
Code:
objRequest.open('GET', 'xmlhttp_request_dummy.php?'+new Date().getTime(), true);
Ciao
Quaese
 

Neue Beiträge

Zurück