DerC: Formular mit Ajax senden > Div aktualisieren

Guten Tag,

folgender Ausgangspunkt:

In meiner index.php gibt es einen Link zu einer Lightbox:

<span class="fa fa-plus"></span> <a href="include/ajax-senden.php?get=2" class="various fancybox.ajax">Eintrag hinzufügen</a>

Die Datei die durch diesen Link geöffnet wird enthält ein kleines Formular

<form name="formular_1" id="ajax_hinzufuegen" method="post">
    <label for="IhreAntwort">Ihre Antwort</label>
    <input type="text" name="IhreAntwort" id="IhreAntwort" value="">
    <input type="submit" name="senden" id="senden" value="Senden">
</form>

<div id="antwort"></div>

In dieser Datei befindet sich auch das kleine Ajax Script welches dafür sorgt die Daten in die Datenbank zu speichern.

$(document).ready(function () {
			
	$("#ajax_hinzufuegen").submit(function() {

		var form = $('#ajax_hinzufuegen');
		var data = form.serialize();	
					
		$.ajax({
			type: "POST",
			url: "include/ajax-senden.php?get=2",
			data: data,
			success: function(msg)
			{
			$("#antwort").html("Ihr Eintrag wurde erfolgreich hinzugefügt");
			}
		});
	 return false;           
	});             
});

Dieses Script klappt. Der Eintrag landet in der Datenbank und es wird die Erfolgsmeldung ausgegeben.

Jetzt möchte ich noch zusätzlich folgendes erreichen:

In meiner index.php (NICHT die Datei, die gerade noch offen ist) gibt es ein div:

<div id="userAntworten"></div>

Dieses oben genannte div soll nachdem die Daten erfolgreich in die Datenbank eingetragen und die Erfolgsmeldung ausgegeben wurde (in der geöffneten Datei) aktualisiert werden. Ist dieses ohne größeren Aufwand möglich? Wenn ja, könnt ihr mir vielleicht ein Tipp geben oder sogar das Script oben etwas ergänzen, dass dieses klappt?

Bitte nicht wundern wenn ich nicht sofort auf eine Antwort reagiere. Ich darf nur in den Pausen an den Rechner und daheim habe leider noch kein Internet.

Nachtrag: Sollte die Frage aufkommen, warum überhaupt die Aktualisierung. In diesem div befindet sich eine kleine PHP Funktion die dafür sorgt, die eingetragenen Daten wieder auszugeben. Dieses soll wie von Geisterhand geschehen, wenn der User weitere Daten hinzufügt.

  1. Tach!

    In meiner index.php (NICHT die Datei, die gerade noch offen ist) gibt es ein div:
    Dieses oben genannte div soll nachdem die Daten erfolgreich in die Datenbank eingetragen und die Erfolgsmeldung ausgegeben wurde (in der geöffneten Datei) aktualisiert werden. Ist dieses ohne größeren Aufwand möglich?

    Wenn die index.php im Moment des Eintragens nicht aktiv ist, wird sie erst irgendwann zu einem späteren Zeitpunkt aufgerufen. Zu diesem muss sie dann selbständig die benötigten Daten besorgen, wenn sie welche anzeigen soll. Der Webserver jedenfalls merkt sich nicht, dass ein anderes Script etwas gemacht hat. Das musst du selbst tun, oder du bekommst es aus den bereits gespeicherten Daten ausgelesen.

    dedlfix.

    1. Wenn die index.php im Moment des Eintragens nicht aktiv ist, wird sie erst irgendwann zu einem späteren Zeitpunkt aufgerufen. Zu diesem muss sie dann selbständig die benötigten Daten besorgen, wenn sie welche anzeigen soll. Der Webserver jedenfalls merkt sich nicht, dass ein anderes Script etwas gemacht hat. Das musst du selbst tun, oder du bekommst es aus den bereits gespeicherten Daten ausgelesen.

      Kann ich nicht dem success: function(msg) Aufruf mitteilen, dass ein Bereich in einer anderen Datei in meinem Fall die index.php aktualisiert werden soll? Im schlimmsten Fall auch ein iframe (was mir aber nicht sehr gefällt).

      Nachtrag: Hab etwas gefunden: http://www.tfonfara.de/ajax-seiteninhalt-laufend-aktualisieren-jquery.xhtml ich weiß nur nicht, ob ich dieses auf mein Script anwenden könnte? Wenn ich es richtig verstehe müsste ich $("#refresh").load("refresh.php"); in meinen success Aufruf packen und dabei die index.php angeben?

      1. Tach!

        Kann ich nicht dem success: function(msg) Aufruf mitteilen, dass ein Bereich in einer anderen Datei in meinem Fall die index.php aktualisiert werden soll?

        Nein, kannst du nicht. Die success-Methode läuft auf dem Client und die index.php liegt auf dem Server. Der Client ändert keine Werte in Dateien auf dem Server.

        Wenn das was die index.php als Ausgabe generiert im selben Tab/Fenster bereits geöffnet ist, dann hast du irgendein iframe-Konstrukt und dann geht das unter Umständen. Alternativ muss die Ausgabe der index.php im Browser gerade im angezeigt sein und der Ajax-Aufruf Bestandteil dieser Ausgabe und der hinzugeladenen Ressourcen sein.

        dedlfix.

        1. Nein, kannst du nicht. Die success-Methode läuft auf dem Client und die index.php liegt auf dem Server. Der Client ändert keine Werte in Dateien auf dem Server.

          Wenn das was die index.php als Ausgabe generiert im selben Tab/Fenster bereits geöffnet ist, dann hast du irgendein iframe-Konstrukt und dann geht das unter Umständen. Alternativ muss die Ausgabe der index.php im Browser gerade im angezeigt sein und der Ajax-Aufruf Bestandteil dieser Ausgabe und der hinzugeladenen Ressourcen sein.

          Dann eine andere Idee, man muss ja flexibel bleiben. Mein Popup fliegt raus, dafür blende ich das Feld um einen Eintrag hinzufügen mit jQuery toggle() ein. Wäre es dann möglich ein div zu aktualisieren?

          1. Tach!

            Dann eine andere Idee, man muss ja flexibel bleiben. Mein Popup fliegt raus, dafür blende ich das Feld um einen Eintrag hinzufügen mit jQuery toggle() ein. Wäre es dann möglich ein div zu aktualisieren?

            Du kannst mit Javascript die aktuell angezeigte Seite ändern. Es ist dabei unerheblich, ob das nach einem Ajax-Aufruf oder aufgrund eines anderen Ereignisses passiert. Es muss eben nur die aktuelle Seite sein und nicht irgendeine zeitlich oder örtlich andere.

            dedlfix.

  2. moin,

    Dieses Script klappt. Der Eintrag landet in der Datenbank und es wird die Erfolgsmeldung ausgegeben.

    Lass es so wie es ist und fass diesen Code niee wieder an.

    Jetzt möchte ich noch zusätzlich folgendes erreichen:

    Dann solltest Du dein konzept gründlich überarbeiten und das alles nicht so umständlich über unnötig zusätzliche Links (für user) und weitere dateien (für du) machen. Mach das in einer Datei, fertig.

    mfg

    1. Dann solltest Du dein konzept gründlich überarbeiten und das alles nicht so umständlich über unnötig zusätzliche Links (für user) und weitere dateien (für du) machen. Mach das in einer Datei, fertig.

      Ähm geht es noch? Kennst du meine Anwendung? Kennst du meine User? Kennst du das Konzept hinter der Seite? Nein, also am besten deine Füße ganz still halten.

      Alles in einer Seite abzuarbeiten hat für den User mehr als nur ein Nachteil. Der User füllt sein Formular aus, das derzeit 39 Felder hat. Jetzt fällt ihm ein, scheiße ich habe noch ein weiteres Hobby, also klickt er auf den Link weitere Hobbys hinzufügen, es öffnet sich ein Popup, dort trägt der User seine weiteren Hobbys ein, schließt das Fenster und gut ist.

      Genau dieses Vorgehen haben Google+, Facebook, Kwick und auch Yappi schon seit Jahren. Also erzähl mir bitte nicht, dass die User dieses nicht mögen.

      Da man hier aber nur unprofessionelle Antworten bekommt, werde ich in einem anderen Forum wo wirklich Fachleute vorhanden sind weiter diskutieren. Daher könnt ihr euch jede Antwort ersparen, ich werde diese weder lesen noch kommentieren.

      1. Hallo

        Da man hier aber nur unprofessionelle Antworten bekommt, werde ich in einem anderen Forum wo wirklich Fachleute vorhanden sind weiter diskutieren.

        Bon chance! Wie man so sagt. Aber findest du es nicht vielleicht etwas, äh, sagen wir „unprofessionell“, von einer Antwort gleich auf die ganze Community hier zu schließen?

        Also ich lese hier schon eine Weile mit und habe eher den Eindruck gewonnen, dass hier durchaus einige „Fachleute“ am Werk sind...

        Daher könnt ihr euch jede Antwort ersparen, ich werde diese weder lesen noch kommentieren.

        Tja, jetzt habe ich's trotzdem getan. Sei's drum.

        Gruß,

        Orlok

        1. Hallo Orlok

          Tja, jetzt habe ich's trotzdem getan. Sei's drum.

          D A N K E

          gr qx

        2. @Orlok

          Bon chance! Wie man so sagt.

          Aber nicht schreibt.

          Ceci s'appelle: „Bonne chance!“

          Tout vient à point à qui sait attendre...

          Amitiés,

          Orlok

      2. Alles in einer Seite abzuarbeiten hat für den User mehr als nur ein Nachteil. Der User füllt sein Formular aus, das derzeit 39 Felder hat.

        Also mal ganz ehrlich, Besuchern ein Formular mit 39 Feldern hinzulegen, das ist völlig indiskutable. Sowas habe ich überhaupt noch nirgendwo gesehen.

        Aber egl. Wnn du meine antwort als unprof. bezeichn. deine Entscheidung. Für das was du haben willst, ist und bleibt EINE Seite von vielen Lösungswegen derjenige, der am Weitesten führt (Stichwort unobtrusive JS, responsive Design, benutzerfreundlichkeit, Fallback usw.).

        Bist du irgendwo angestellt? Dann sieh zzu wie du das hinkriegst. Vielleicht haben ja die Kollegen ein brauchbares Konzept. Stichworte siehe oben und täglich Thema hier im Forum.

        gehts noch ?

        Nein Dein Konzept ist Schrott. Und das ist ein gutgemeinter Tipp.

        mfg