Olaf: AJAX response Text oder XML

Servus,
arbeite mich gerade in AJAX ein und bin etwas verunsichert.
Es gibt ja die responseXML und die responseText Varianten.
Hier mein Szenario:
Ein Formular wird aufgerufen und zeigt als Vorbelegung die aktuellen Werte, die in der Datenbank gespeichert sind.
Bei Änderung der Werte und anschließendem Betätigen des Absende Buttons, soll sich nur der div-container aktualisieren, der das Formular enthält und erneut als Vorbelegung in den Formularfeldern die nun aktualisierten Werte aus der Datenbank anzeigen.

Momentan werden die Formulareingaben an eine PHP Auswerte-Seite geschickt, die  alle Angaben auf Fehleingaben prüft, bei Fehlangaben entsprechende Hinweise ausgibt und bei fehlerfreien Eingaben die Werte in der Datenbank aktualisiert und dann wieder zurückleitet auf die Seite mit dem Formular.

Meine Frage: in welche Richtung muss ich dass mit AJAX entwickeln? Soll das AJAX-Formular eine php Seite aufrufen, die bei fehlerfreier Eingabe die neuen Werte in ein XML File schreibt (responseXML)? Oder soll die aufgerufene PHP Seite bei fehlerfreien Werten den kompletten HTML-Inhalt des div-containers unter Verwendung der aktualiserten Werte aus der Datenbank neu schreiben (responseText).

Ich hoffe, man versteht was ich hier meine.
Es grüßt
Olaf

  1. Hi,

    Bei Änderung der Werte und anschließendem Betätigen des Absende Buttons, soll sich nur der div-container aktualisieren, der das Formular enthält und erneut als Vorbelegung in den Formularfeldern die nun aktualisierten Werte aus der Datenbank anzeigen.

    Und unter diesen Werten sind welche, die sich nicht aus Nutzereingaben ergeben haben, sondern erst serverseitig berechnet werden? (Denn sonst wäre es ja unnötig, denn die aktuellen Formulareingaben hast du ja alle clientseitig vorliegen.)

    Meine Frage: in welche Richtung muss ich dass mit AJAX entwickeln?

    In die, die du für zielführend hältst.

    Soll das AJAX-Formular eine php Seite aufrufen, die bei fehlerfreier Eingabe die neuen Werte in ein XML File schreibt (responseXML)? Oder soll die aufgerufene PHP Seite bei fehlerfreien Werten den kompletten HTML-Inhalt des div-containers unter Verwendung der aktualiserten Werte aus der Datenbank neu schreiben (responseText).

    Oder die Daten als JSON zurückgeben … (handelt sich m.E. einfacher als XML).

    Mit XML/JSON müsstest du das neu Befüllen der Felder clientseitig übernehmen (also dort zusätzliche Logik implementieren); mit Ausgabe des kompletten HTML-Codes des Formulars und einfachem Ersetzen dessen clientseitig wäre diese Aufgabe an die Server-Seite verlagert – dafür müsstest du aber clientseitig ggf. Events neu ans Formular und seine Elemente binden, weil die ja anschließend „andere“ Elemente sind als vorher.

    Ich würde es per JSON machen, und dann clientseitig darüber loopen und für die im JSON genannten Formularelemente die neuen Values setzen.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Servus Chris,

      ich wähle die Variante reponseText und ersetze Serverseitig den Inhalt des div-containers.
      Habe ich auch schon umgesetzt und auch die Übergabe der Formularvriablen per POST an das Auswerte.Skript funktioniert.
      Nur: was mache ich mit der Überprüfung, ob die Eingaben korrekt sind (bspw. keine Unerlaubten Zeichen enthalten?). Das passiert ja gerade in meinem PHP-Auswerte Skript.

      Am liebsten wäre mir, dass bei korrekten Eingaben der neue Formlar-Code geschrieben wird und bei falschen Eingaben die Fehlermeldung.

      Auf der Clientseite müsste ich dann Kontrollieren (bspw. durch ein Kontrollzeichen an erster Stelle meines "responseText", ob da ein neues Formualar oder der Hinweis ankommt, dass die Eingaben nicht korrekt waren.
      Letzters sollte am besten in einem PopUp oder so angezeigt werden.

      Ist das grober Unfug oder macht das Sinn, eine solche Umsetzung anzugehen?

      Es grüßt
      Olaf

      1. hi,

        wenn alles Serverseitig gebaut wird, kannst du an der stelle viel mehr machen als wenn es beim Client bestimmte dinge erwartet. Vorallem auch in die Zukunft gesehen, wo man ja alles ändern will ;), ist es einfacher, wenn der Client nur noch anzeigen muss!

        Gruß Niklas

        --
        Man muss nicht alles wissen, man sollte aber wissen, wo das nicht gewusste zu finden ist.