php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 19.07.2008, 16:38  
Neuer Benutzer
 
Registriert seit: 05.05.2008
Beiträge: 19
PHP4ever befindet sich auf einem aufstrebenden Ast
Standard Ajax --- Nur einmal nachladen

Hallo,

Ich habe heute angefangen mich sowohl mit Javascript als auch speziell mit AJAX auseinanderzusetzen

Zum experimentieren wollte ich die "Shoutbox als AJAX-Anwendung" von devblog.de umwandeln zu einem kleinen Kontaktbuch.

Die Javascript-Datei des Scripts sieht wie folgt aus:
Code:
// Quelle: http://www.devblog.de
// "Shoutbox als AJAX-Anwendung"
// Code darf frei verwendet werden

// globale Instanz von XMLHttpRequest
var xmlHttp = false;

// XMLHttpRequest-Instanz erstellen
// ... für Internet Explorer
try {
    xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
    try {
        xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e) {
        xmlHttp  = false;
    }
}
// ... für Mozilla, Opera und Safari
if (!xmlHttp  && typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();
}

// aktuelle Daten laden
loadData();

// alle 5 Sekunden neue Daten holen
setInterval("loadData()",5000);

function loadData()
{
 if (xmlHttp) {
     xmlHttp.open('GET', 'getdata.php', true);
     xmlHttp.onreadystatechange = function () {
         if (xmlHttp.readyState == 4) {
             document.getElementById("asb_content").innerHTML = xmlHttp.responseText;
         }
     };
     xmlHttp.send(null);
 }
}

function saveData()
{
if (xmlHttp) {
    xmlHttp.open('POST', 'setdata.php');
    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttp.send('name='+document.frmshoutbox.txtname.value+'&message='+document.frmshoutbox.txtmessage.value);
}

// Message-Eingabefelder leeren und Focus setzen
document.frmshoutbox.txtmessage.value = '';
document.frmshoutbox.txtmessage.focus();
}
Der Inhalt der Datenbank wird mittels
Code:
setInterval("loadData()",5000);
aller 5 Sekunden neu geladen. Der Sinn von AJAX ist ja aber unter anderem den Datentransfer einer Website zu vermindern. Wie kann ich es machen das der Inhalt immer erst dann nachgeladen wird, wenn ein neuer Eintrag per saveData() hinzugefügt wurde?

Der Aufruf der Funktionen erfolgt im Original Script wie folgt:
Code:
<form action="" name="frmshoutbox" onsubmit="saveData(); return false;">
Meinerseits wurde er umgewandelt auf
Code:
<form action="" name="frmshoutbox" onsubmit="saveData(); setTimeout('loadData()',3000); return false;">
und dafür das setinterval im Javascript auskommentiert.
Doch nun wird garnix nachgeladen! Hat jemand einen Lösungsvorschlag?

lg Flo
__________________
"Je größer die Insel des Wissens, desto länger die Küste der Verzweiflung!"
PHP4ever ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 19.07.2008, 17:12  
Erfahrener Benutzer
 
Benutzerbild von phpdummi
 
Registriert seit: 06.06.2008
Beiträge: 1.631
PHP-Kenntnisse:
Anfänger
phpdummi ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Was sagt dir den Firebug dazu?
__________________
"Nobody is as smart as everybody" - Kevin Kelly
— The best things in life aren't things
phpdummi ist offline   Mit Zitat antworten
Alt 19.07.2008, 17:29  
Neuer Benutzer
 
Registriert seit: 05.05.2008
Beiträge: 19
PHP4ever befindet sich auf einem aufstrebenden Ast
Standard

Also habe soeben Firefox 3.0.1 und Firebug installiert weiß aber ehrlich gesagt nicht wie ich da einen Fehler finden soll!? Mir fällt unter "DOM" nichts auffälliges ins Auge ...


Zumal bei meiner Methode die Seite doch jedesmal neu geladen wird was sie ja eben nicht soll!
__________________
"Je größer die Insel des Wissens, desto länger die Küste der Verzweiflung!"

Geändert von PHP4ever (19.07.2008 um 17:35 Uhr).
PHP4ever ist offline   Mit Zitat antworten
Alt 19.07.2008, 17:43  
Neuer Benutzer
 
Registriert seit: 05.05.2008
Beiträge: 19
PHP4ever befindet sich auf einem aufstrebenden Ast
Standard

Dank Firebug habe ich nun herausgefunden, dass beim absenden des Formulars mit meinen Aufruf
Code:
<form action="" name="frmshoutbox" onsubmit="saveData(); setTimeout("loadData()",3000); return false;">
meine Seite komplett neu geladen wird! Weiß jemand warum?
Bin gerade in den Anfangszügen mit Javascript!
__________________
"Je größer die Insel des Wissens, desto länger die Küste der Verzweiflung!"
PHP4ever ist offline   Mit Zitat antworten
Alt 21.07.2008, 13:18  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Wegen der doppelten Anführungszeichen bei "loaddata()".
Für den Interpreter fängt der Code beim ersten doppelten Anführungszeichen an und ist bei zweiten doppelten Anführungszeichen zu Ende. Hier also
onsubmit="saveData(); setTimeout("
David ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Anwendungsentwickler (Schwerpunkt AJAX) in Hamburg WPM Beitragsarchiv 0 24.04.2008 16:01
AJAX auf entfernte Datei GSJLink HTML, Usability und Barrierefreiheit 5 02.03.2008 11:29
Ajax Chat Ansatz notyyy PHP Tipps 2008 3 02.01.2008 23:47
AJAX: Session-Inhalt an PHP Curanai HTML, Usability und Barrierefreiheit 2 05.11.2007 15:45
AJAX open mit POST und GET DonTermi HTML, Usability und Barrierefreiheit 5 04.10.2007 18:22
Fileupload via AJAX GSJLink HTML, Usability und Barrierefreiheit 11 07.09.2007 15:44
Javascript in Ajax responseText funktioniert nicht Plague PHP Tipps 2007 6 03.07.2007 21:08
Ajax bild.php aktualisieren M3g4Star HTML, Usability und Barrierefreiheit 3 09.03.2007 17:14
CSS Nachladen [-UFO-]Melkor HTML, Usability und Barrierefreiheit 4 04.03.2007 19:24
2 Fragen zu AJAX Freeaak HTML, Usability und Barrierefreiheit 11 22.02.2007 18:29
Ajax und Sonderzeichen? GSJLink HTML, Usability und Barrierefreiheit 1 11.11.2006 14:36
AJAX: Newsflash: How to? SvenLittkowski HTML, Usability und Barrierefreiheit 11 26.09.2006 23:14
ajax / popup problem flflfl HTML, Usability und Barrierefreiheit 11 11.06.2006 20:05
Ajax Formular Chrischnian HTML, Usability und Barrierefreiheit 8 29.05.2006 17:58
php + ajax notyyy PHP Tipps 2006 27 14.05.2006 14:58

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ajax css nachladen, je größer die insel des wissens, xajax css nachladen, ajax css laden, function loaddata(), shoutbox als ajax-anwendung, css auf nachgeladene inhalte anwenden, je größer die insel des wissens, desto länger die küste der verzweiflung, frmshoutbox., css nur einmal laden, ajax content aus datenbank laden, ajax nur einmal, microsoft.xmlhttp save, frmshoutbox, je größer die insel des wissens autor, function loaddata, shoutbox mit javascript nachladen, css mit ajax nachladen, ajax daten nachladen xmlhttpobject nur einmal, ajax datei nur einmal laden

Alle Zeitangaben in WEZ +1. Es ist jetzt 13:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum