![]() |
Anzeige:
|
|
|||||||
| PHP/MySQL Alles rund um die Programmiersprache PHP sowie MySQL. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 09.04.2006
Ort: Rodgau
Beiträge: 200
|
Hallo,
Ich habe mir ein "PM-System" zusammen geschrieben. Nun möchte ich, dass immer überprüft wird, ob neue Nachrichten angekommen sind. Bisher funktioniert das ja nur, wenn ich einen Link tätige und damit auf eine andere Seite komme. Geht das nicht auch automatisch? Wenn ja, wie? Ich habe es mit Meta-Tags versucht. Die Seite hat also alle 30sek neu geladen. Leider passiert dann das Problem, dass die gewisse Seite nicht mehr angezeigt wird (nach ca. 3 Minuten). Warum, weiß ich nicht. Gibt es da eine andere Möglichkeit? PHP? JavaScript?
__________________
Treffen sich 2, einer kommt nicht |
|
|
|
|
|
|
#2 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 30.12.2002
Ort: Stuttgarter Kreis
Beiträge: 11.722
|
Nein da gibt es keine Alternative. Auch in Foren geschieht die Abfrage nach neuen Nachrichten erst beim Klick auf einen Link.
__________________
|
|
|
|
|
|
#3 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 09.04.2006
Ort: Rodgau
Beiträge: 200
|
Ja,
Dessen war ich mir bewusst. Könnte ja sein, dass es mit JavaScript geht, da es ja ebenfalls Uhrenscripts gibt, die mit JavaScript arbeiten. Aber wenn das nicht geht, dann muss ich das wohl so lassen :/ Danke.
__________________
Treffen sich 2, einer kommt nicht |
|
|
|
|
|
#4 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
|
Du kannst mit AJAX auch alle X Sekunden nur eine Div-Box der Seite aktuallsieren, dann muss nicht die gesamte Seite aktualisiert werden. So sparst du dir zumindest den Aufwand, die Seite komplett neu zu laden, was Traffic spart.
Im HTTP-Protokoll ist nicht vorgesehen, dass der Server einem Client selbstätig Daten sendet, die Aktionen gehen immer vom Client aus. |
|
|
|
|
|
#5 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 09.04.2006
Ort: Rodgau
Beiträge: 200
|
Das hört sich interessant an.
Wie funktioniert das denn? Habe diesen Begriff leider bisher nie gehört. Hättest du evtl. ein Beispiel, wie das aussieht, dass ich eine div-Box alle 30 Sekunden z.B. aktualisiere? Oder alle 60... Das ist ja aber irrelevant..
__________________
Treffen sich 2, einer kommt nicht |
|
|
|
|
|
|
#6 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
|
Okay, here we go:
AJAX.html Code:
<html>
<head>
<title>AJAX Refresh-Beispiel</title>
</head>
<body onload="RefreshDiv()">
<script type="text/javascript">
var xmlHttp = GetAJAX(); // AJAX-Objekt ermitteln
function RefreshDiv() { // Wird vom Body aus aufgerufen
// Funktion, die beim Statuswechsel aufgerufen wird heißt AJAX
xmlHttp.onreadystatechange = AJAX;
// Aufzurufende Webseite
xmlHttp.open("GET", "toload.php", true);
// HTTP-Request absenden
xmlHttp.send();
}
function AJAX()
{
if(xmlHttp.readyState == 4) // Daten kommen
{
var response = xmlHttp.responseText; // Antwort
// Div-Box by ID ermitteln und Text hineinschreiben
document.getElementById('Status').innerHTML = response;
// Die AJAX-Funktion nochmals in einer Sekunde ausführen
setTimeout("RefreshDiv()", 1000);
}
}
function GetAJAX() {
var xmlHttp;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
}
catch (e) {
// Internet Explorer
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) { }
}
}
return xmlHttp;
}
</script>
<div id="Status"></div>
</body>
</html>
toload.php: Code:
<?php echo "Sie haben " . rand(1, 100) . " neue Nachrichten."; ?> Grüße Genesis |
|
|
|
|
|
#7 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 09.04.2006
Ort: Rodgau
Beiträge: 200
|
Danke Dir
__________________
Treffen sich 2, einer kommt nicht |
|
|
|
|
|
#8 (Direktlink) |
|
Forenmaskottchen
![]() Registriert seit: 18.07.2004
Ort: Schwabenländle
Beiträge: 922
|
Wichtig noch: das Ganze geht nur auf einem Webserver, weil die ajax.html ein HTTP-Request an einen Webserver sendet. D.h. du kannst das nicht roh alleine durch öffnen der ajax.html vom Desktop aus testen.
|
|
|
|
|
|
#9 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 09.04.2006
Ort: Rodgau
Beiträge: 200
|
Ich habe ja sowieso einen Apacheserver emuliert. (xampp)
Von daher sollte es ja erstmal kein Problem sein. Später wandert das ja eh auf den Webspace.
__________________
Treffen sich 2, einer kommt nicht |
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|