Ajax: Teil einer Seite reloaden

EGJSoldier

Erfahrenes Mitglied
Hallo liebe Community,
ich schreibe über ein .php- Script etwas in meine Datenbank. Wenn es dann gepostet wurde, dann soll es auch sofort ausgegeben werden. Hier mal ein Beispiel, weil es vielleicht ein bisschen schwer zu verstehen ist:
http://bundesliga.de/de/index.php

Wen hier irgendeine Manschaft ein Tor schießt, dann wird es dort auch direkt ohne Seitenreload angezeigt.
Hoffe ihr könnt mir hier weiterhelfen.

MfG
EGJSoldier
 
So ich habe jetzt mal ein bisschen gegooglet und habe das hier gefunden:
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Refresh Example</title>
<script type="text/javascript" language="javascript">
<!--
	/**
	 *   XMLHttp-Objekt erstellen
	 */
	var xmlHttp = false;
	/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	try {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e) {
		try {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (e2) {
			xmlHttp = false;
		}
	}
	@end @*/
	if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
		xmlHttp = new XMLHttpRequest();
	}


	/**
	 *   Request vorbereiten und senden
	 */
	function macheRequest(url) {
		if(xmlHttp) {
			xmlHttp.open("GET", url, true);
			xmlHttp.onreadystatechange = alertInhalt;
			xmlHttp.setRequestHeader("Pragma", "no-cache");
			xmlHttp.setRequestHeader("Cache-Control", "must-revalidate");
			xmlHttp.setRequestHeader("If-Modified-Since", document.lastModified);
			xmlHttp.send(null);
		}
	}

	/**
	 *   Request entgegennehmen und verarbeiten
	 */
	function alertInhalt() {
		if (xmlHttp.readyState==4 && xmlHttp.status==200) {
			document.getElementById("shoutcastdiv").innerHTML = xmlHttp.responseText;
		}
	}


	/**
	 *   Funktion alle 30 Sekunden aufrufen
	 */
	var iv = setInterval("macheRequest('test.html')", 30000);

	/**
	 *   Inhalt zu Begin laden
	 */
	macheRequest('test.html');

//->
</script>
</head>

<body>
	Teil ausserhalb des Reload-Bereichs...
	<div id="shoutcastdiv">hier wird der text neu geladen...</div>
</body>
</html>

ich habe da jedoch ein paar Verständnissprobleme. Und zwar bereiten mir diese Zeilen Kopfzerbrechen:
HTML:
	var iv = setInterval("macheRequest('test.html')", 30000);

	/**
	 *   Inhalt zu Begin laden
	 */
	macheRequest('test.html');
Was wird mit den Zeilen gemacht UNd welche funktion hat die test.html. Da komme ich irgendwie nicht ganz hinter.

MfG
EGJSoldier
 
Hi,

der Sinn dieser beiden Zeilen ist vom Autor kommentiert:
Code:
/**
	 *   Funktion alle 30 Sekunden aufrufen
	 */
	var iv = setInterval("macheRequest('test.html')", 30000);

	/**
	 *   Inhalt zu Begin laden
	 */
	macheRequest('test.html');
Demnach wird alle 30 Sekunden ein Request an das Dokument "test.html" gesendet, dessen Inhalt innerhalb des <div>-Blocks #shoutcastdiv ausgegeben wird.

mfg Maik
 
Hmm, ich habe mir jetzt die test.html erstellt, im script tut sich aber irgendwie nichts. Da wird nichts neugeladen. Ist vllt. ein Fehler im Script

MfG
EGJSoldier
 
Hi,

die test.html ist die Datei, die du auf dem Server aufrufst, die deine Anfrage weiterbearbeitet und eine Antwort ans aufrufende Dokument zurück gibt. Die Antwort wird in der Funktion alertInhalt ins Dokument ausgegeben.

Wenn die test.html z.B. PHP verarbeiten kann, kannst du mit
Code:
<?php
echo(date("H:i:s", mktime()));
?>
alle 30 Sekunden die Zeit aktualisiert ausgeben.

Ciao
Quaese
 
Hmm also ich versuche das ganze lokal.Ich habe eine Datei, die sich site_reloade.html nennt. Da ist auch das Das Javascript enthalten. Es ist das Script, was ich auch zuvor gepostet habe. Dann habe ich eine test.html erstellt. Da habe ich ein einfachen Text gespeichert(html-tags sind natürlich mit enthalten): "Hier steht ein Text". Wenn ich die seite site_reloade.html ausführe, dann sehe ich die ganze Zeit nur:"Hier wird der Text neu geladen...". Was mache ich den hier falsch

MfG
EGJSoldier
 
Versuchst du dies auf der lokalen Festplatte, oder auf dem lokalen Webserver (z.B. Xampp)?

Letzteres (Hypertext Transfer Protocol = http://) ist nämlich für den HTTP-Request vonnöten.

mfg Maik
 

Neue Beiträge

Zurück