Ajax neuladen der Seite im Hintergrund

mkoeni1

Erfahrenes Mitglied
Hallo Leute,

ich habe ein Problem und benötige Eure Hilfe.
Ich möchte eine Seite basteln, auf der ich 10 Minuten ein Applet anzeigen lassen will, wenn die Abfrage der Datenbank korrekt ist. Ich habe bis jetzt folgenden ähnlichen Code:
Datei formular.php
PHP:
<html><head>
<title>AJAX PHP Beispiel mit Select</title>

<script type="text/Javascript">
<!--
function createXMLHttpRequest() {

var ua;

if(window.XMLHttpRequest) {
    try {
      ua = new XMLHttpRequest();
    } catch(e) {
      ua = false;
    }
  } else if(window.ActiveXObject) {
    try {
      ua = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e) {
      ua = false;
    }
  }
  return ua;
}

var req = createXMLHttpRequest();

function sendRequest() {
  id = document.getElementById('dropdown').value;
  req.open('get', 'func.php?s='+ id);
  req.onreadystatechange = handleResponse;
  req.send(null);
}

function handleResponse() {

  if(req.readyState == 4){
    document.getElementById('inhalt').innerHTML = req.responseText;
  }
  else
  alert("loading" + ajax.readyState);
}

//-->
</script>

</head>
<body>

<p />W&auml;hlen Sie einen Eintrag aus um den Inhalt zu laden

<p /><select id="dropdown" onChange="sendRequest()">
<?php
include 'sites/dbconnect.php'; // Hier die Verbindung zur Datenbank herstellen

$result = mysql_query("SELECT id,username FROM `user` ; ");
while($row = mysql_fetch_object($result))
{
    echo '<option value="'.$row->id.'">'.$row->username.'</option>';
}
?>
</select>

    <div id="inhalt"></div>


</body></html>
auf dieser Seite wird zunächst eine DropDown Boxx angezeigt, die eine Datenbank ausliest. In der Datei func.php ist folgende Abfrage definiert:
PHP:
<?
include 'sites/dbconnect.php'; // Hier die Verbindung zur Datenbank herstellen
//Inhalte laden
$result = mysql_query("SELECT eventTitle FROM `events` WHERE `user_id` = '".$_GET['s']."'; ");
while($row = mysql_fetch_object($result)) 
{
    echo '<p /><b>'.$row->eventTitle.'</b><br />';
}
?>

Meine nächsten Schritte sind jetzt, wie bekomme ich es "automatisch" hin, dass sich die Seite selbständig alle x Sekunden lädt (ohne Benutzeraktion der ein DropDown auswählt? ). -> Hauptziel ist das selbständige Abfragen der Datenbank, ob eine Event (StartZeit und EndZeit sind bekannt) gerade stattfindet und der Benutzer daraufhin ein Applet angezeigt bekommt.

Wer kann mir hierzu weiterhelfen? Vielen Dank schonmal im Vorraus

Gruß
Matze
 
Zuletzt bearbeitet:
Hi,

mit der Methode setInterval kann eine Routine periodisch gestartet werden. Diese kannst du im onload-Event des Dokuments starten.
Code:
window.onload = function(){
  hTimer = window.setInterval("sendRequest()", 5000);
}
Weiterhin solltest du auf die Option eines Selectfelds wie folgt zugreifen:
Code:
id = document.getElementById('dropdown').options[document.getElementById('dropdown').selectedIndex].value;
Vielleicht hilft dir das weiter.

Ciao
Quaese
 
Hi,

danke für die Idee.
Ich hab das aber jetzt mit:
PHP:
setTimeout("ajax()", 2000);
gelöst.

Im Body wird zuvor einmalig:
PHP:
<body onload="ajax()">

geladen.

So long
Matze
 
Hallo Ihr lieben ich nutze folgenden Code:

Code:
<script src="https://code.jquery.com/jquery-2.1.1.min.js" type="text/javascript"></script>
<script>
$(document).ready(function(){
setInterval(function(){
$("#screen").load('templates/messages.php')
}, 5000);
});
</script>

eingebunden habe ich das ganze im Header und die entsprechende Datei wird auch neu geladen nur wo ich vorher den Inhalt der Datei sehen konnte, verschwindet dieser nach dem neuladen der Seite und ich verstehe nicht so ganz warum mir der Inhalt, dann nicht mehr angezeigt wird.

Wenn ich die Seite mit F5 neulade, dann kann ich den Inhalt der Seite auch wieder sehen. Könnte mir einer dieses Phänomen erklären?

Grüße
 
die entsprechende Datei wird auch neu geladen nur wo ich vorher den Inhalt der Datei sehen konnte, verschwindet dieser nach dem neuladen der Seite und ich verstehe nicht so ganz warum mir der Inhalt, dann nicht mehr angezeigt wird.
Den Fehler kann ich mit dem gezeigten Code nicht reproduzieren.

Ist das Ganze online zu begutachten?
 
kurze frage dazu, kann man das auch mit requestAnimationFrame umsetzen, da der ja stoppt wenn der browsertap inaktiv wird...
Oder ist der wirklich nur fuer animationen?
 
Zurück