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 06.02.2009, 22:11  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 561
BartTheDevil89 kann nur auf Besserung hoffen
Standard AJAX-Anfänger hat ein paar Fragen...

Hallo,

ich habe mich jetzt endlich mal an Ajax herangewagt und mit Hilfe eines Tutorials, das eine Shoutbox beschreibt. Mein Wunschziel ist ein kleiner Notizblock, wo man also Notizen eintragen kann und sie wieder löschen kann.
Allerdings habe ich ein paar Probleme:

1. Ist derzeit eine Funktion drin, die alle 5 Sekunden die Shoutbox neu lädt. Ich hingegeben möchte allerdings, dass sie einfach neu geladen wird, nachdem ein neuer Eintrag war. Mein Versuch war dieser hier:

Code:
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();
loadData();//Hier werden jetzt die Daten neu geladen.....
}
....und oben eben das setInterval("loadData()",5000); wieder raus.

Aber das läuft einfach nicht.

2. Möchte ich die Löschfunktion noch bei [Loeschen] reinsetzen. Dafür muss ja wieder in der shoutbox.js ne Funktion einbauen, die mir dann ne neue php-Seite aufrufen und dort eben den DB-Eintrag löscht und wie schon bei Problem 1 dann die Shoutbox neu lädt. Aber wie muss dann der Link ausschauen, dass die entsprechende Funktion aufgerufen wird?


Das komplette Script (wenn auch nicht ganz, da ich ja schon bisschen was geändert habe) findet ihr hier am Ende des Tutorials zum Download:

devblog.de Tutorial: Shoutbox als AJAX-Anwendung


Dankeschön
BartTheDevil89 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 06.02.2009, 22:36  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von BartTheDevil89
Ich hingegeben möchte allerdings, dass sie einfach neu geladen wird, nachdem ein neuer Eintrag war.
Also nur wenn der Benutzer eine neue Eingabe gemacht hat und diese an den Server gesendet wird gleich die zwischenzeitlich eingetroffenen Nachrichten abholen?
David ist offline   Mit Zitat antworten
Alt 06.02.2009, 22:43  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 561
BartTheDevil89 kann nur auf Besserung hoffen
Standard

Zitat:
Zitat von David Beitrag anzeigen
Also nur wenn der Benutzer eine neue Eingabe gemacht hat und diese an den Server gesendet wird gleich die zwischenzeitlich eingetroffenen Nachrichten abholen?
Ja, wenn halt was neues eingetragen wird, soll er danach direkt neu laden, sodass eben der neue Eintrag drin ist.
BartTheDevil89 ist offline   Mit Zitat antworten
Alt 06.02.2009, 23:16  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Bin mir nicht sicher, ob wir aneinander vorbeischreiben.

Benutzer X, Y und Z, melden sich alle um 11:59:00 an.
11:59:05 X schickt Nachricht (a) ab.
12:01:07 Y schickt Nachricht (b) ab.
Z wartet nur.

Was soll dann Deiner Vorstellung nach wann bei wem passieren?
David ist offline   Mit Zitat antworten
Alt 06.02.2009, 23:37  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 561
BartTheDevil89 kann nur auf Besserung hoffen
Standard

Zitat:
Zitat von David Beitrag anzeigen
Bin mir nicht sicher, ob wir aneinander vorbeischreiben.

Benutzer X, Y und Z, melden sich alle um 11:59:00 an.
11:59:05 X schickt Nachricht (a) ab.
12:01:07 Y schickt Nachricht (b) ab.
Z wartet nur.

Was soll dann Deiner Vorstellung nach wann bei wem passieren?
Grundsätzlich soll das ne Funktion für einen einzelnen sein....also das soll keine Onlineversion oder so sein. Ein Benutzer nutzt den Notizblock und deswegen brauch er das nicht immer neu überprüfen. Einfach nach der Eingabe anzeigen und gut....
BartTheDevil89 ist offline   Mit Zitat antworten
Alt 07.02.2009, 09:40  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Dann lass doch direkt als Antwort auf die Anfrage die neuen Daten liefern.

Code:
function saveData() {
  xmlHttp.open...
  xmlHttp.setRequestHeader...
  xmlHttp.onreadystatechange = processNewData;
  xmlHttp.send....
}

function processNewData(xmlHttp) {
  // hier die neuen Daten verarbeiten.
}
siehe https://developer.mozilla.org/En/Using_XMLHttpRequest
David ist offline   Mit Zitat antworten
Alt 07.02.2009, 10:49  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 561
BartTheDevil89 kann nur auf Besserung hoffen
Standard

Hmh....versteh leider nicht ganz, wie du das meinst. Denn hier ist die Funktion, die die Daten einträgt:

Code:
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);
 }
 document.frmshoutbox.txtmessage.value = '';
 document.frmshoutbox.txtmessage.focus();
}
Die passende Funktion fürs neue Laden der Daten ist
Code:
loadData();
Aber wo müsste ich dir jetzt in der Funktion mit einbauen, dass die also am Ende geladen wird?

Danke
BartTheDevil89 ist offline   Mit Zitat antworten
Alt 07.02.2009, 13:50  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Musst Du die Daten extra nochmal mit einem neuen Request abholen? Warum schickt Dir der Server nicht einfach gleich als Antwort auf die Anfrage in saveData() die neuen Daten?
David ist offline   Mit Zitat antworten
Alt 07.02.2009, 14:15  
Erfahrener Benutzer
 
Registriert seit: 09.05.2005
Beiträge: 561
BartTheDevil89 kann nur auf Besserung hoffen
Standard

Zitat:
Zitat von David Beitrag anzeigen
Musst Du die Daten extra nochmal mit einem neuen Request abholen? Warum schickt Dir der Server nicht einfach gleich als Antwort auf die Anfrage in saveData() die neuen Daten?
Ähm...ja wie würdest du denn die saveData() ändern, dass er es macht? Wie gesagt ich bin noch recht Frischling in dem Gebiet....
BartTheDevil89 ist offline   Mit Zitat antworten
Alt 07.02.2009, 14:38  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zum Ausprobieren:
PHP-Code:
<?php
if ( isset($_POST['nd']) ) {
  
// Ajax-Request mit neuen Daten
  // Daten verarbeiten
  // Ergebnis senden
  
echo date('H:i:s') . ': '$_POST['nd'];
}
else {
  
// kein Ajax-Request. HTML-Gerüst ausgeben
?>
<html>
  <head>
    <title>ajax test</title>
    <script type="text/javascript">
      function foo() {
        var req = new XMLHttpRequest();
        req.open('POST', '?', true);
        req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        req.onreadystatechange = bar;
        req.send("nd="+escape(document.getElementById("xyz").value));
      }
      
      function bar(aEvt) {
        var req = aEvt.target;
        if (req.readyState == 4) {  
          if(req.status != 200) {
            alert("Fehler");
          }
          else {
            var d = document.createElement('div');
            d.appendChild( document.createTextNode(req.responseText) );
            document.body.appendChild(d);
          }
        }
      }
    </script>
  </head>
  <body>
    <input type="text" id="xyz" />
    <button onclick="foo()">submit</button>
  </body>
</html>
<?php
}
?>
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
[Erledigt] Hab paar grundsätzliche fragen basti0681 PHP Tipps 2009 20 29.01.2009 06:27
Anfänger und Mysql... Paar Fragen! Finaldragon PHP Tipps 2008 40 03.05.2008 10:28
Ein paar Fragen robydog PHP Tipps 2008 7 23.04.2008 11:45
2 Fragen zu AJAX Freeaak HTML, Usability und Barrierefreiheit 11 22.02.2007 18:29
habe ein paar fragen zu REGEX imported_kremser PHP Tipps 2006 11 31.01.2006 15:30
ein paar Fragen Da-JS PHP Tipps 2006 1 08.01.2006 16:36
Ein paar Fragen Diego1978 PHP Tipps 2005-2 2 13.08.2005 00:57
Paar Fragen zum Formmailer c-f-g PHP Tipps 2005 8 09.05.2005 11:14
[Erledigt] Anfänger Fragen HTML, Usability und Barrierefreiheit 13 24.02.2005 19:59
mal ein paar fragen zu login und "communitysytem" Fraylman PHP Tipps 2004-2 10 30.12.2004 17:32
[Erledigt] Allgemeine Anfänger Fragen PHP Tipps 2004-2 5 20.12.2004 14:57
[Erledigt] Ein paar Fragen! HELP! Off-Topic Diskussionen 9 07.12.2004 13:15
ein paar fragen! PHP Tipps 2004-2 18 16.11.2004 12:59
Ein Paar Fragen PHP Tipps 2004-2 6 10.11.2004 19:21
[Erledigt] Lamp unter Suse 9.1 / Paar Fragen! Server, Hosting und Workstations 2 21.08.2004 22:53

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
ajax für anfänger, ajax shoutbox einträge löschen, ajax shoutbox posts nicht löschen, ajax php tutorial von anderer seite request abholen, ajax anfänger tipps, ajax neue daten von mysql abholen, ajax anfänger, ajax und php anfänger, php application/x-www-form-urlencoded, https://developer.mozilla.org/en/using_xmlhttprequest, formular ajax daten vom server abholen, ajax einsteiger beispiel, notizen php ajax

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:36 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