Ajax Auswahl nach Senden stehen lassen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hallo d0nUt,
    was hast Du an dem Code genau optimiert? Inwiefern ist der besser als die erste Version?

    Die erste Version habe ich inzwischen weiterverarbeitet.


    Gibt es eig. eine Möglichkeit die letzte Auswahl mit allen Menüs nach "Auswahl senden" stehen zu lassen?

    Ich habe das Menü in einem Seite gebaut, die noch weitere Ajax-Inhalte anhand der durch das Menü generierten Anfrage nachlädt. Wenn ich eine Auswahl sende und die anderen Teile nachlade "springt" das Menü immer wieder zu seinem Ausgangspunkt zurück. Kann man das irgendwie verhindern, kann man den letzen Stand speichern oder so?

    Dankeschön!!
  • Hallo xound,

    die ganze createXMLHttpRequest() Funktion wurde im Prinzip durch die try/Catch Funktion ersetzt. Das hat locker 15 Zeilen gespart.
    Die sendRequest() Funktion wurde belassen und die handleResponse() Funktion hat nur eine zusätzliche Abfrage erhalten. Es wird überprüft ob der HTTP Status OK (=200) ist.
    Meine Änderungen hab ich übrigens aus diesem Tutorial: http://aleembawany.com/weblog/webdev/000051_ajax_instant_tutorial.html und finden sich inzwischen online unter http://www.coder-wiki.de/HowTos/Ajax-Inhalte-mit-PHP-und-Select-nachladen.

    Zu deinem Problem:
    Auch wenn du die Formulardaten dynamisch lädst, so verwendest du immer noch die herkömmliche HTML Methode um die Daten zu speichern.
    Getreu dem Motto: "Einmal Ajax, immer Ajax" solltest du auch die Daten mittels Ajax sichern

    Hier ein Beispiel

    Quellcode

    1. <html><head>
    2. <script type="text/javascript">
    3. function saveRequest() {
    4. try {
    5. req = window.XMLHttpRequest?new XMLHttpRequest():
    6. new ActiveXObject("Microsoft.XMLHTTP");
    7. } catch (e) {
    8. //Kein AJAX Support
    9. }
    10. req.onreadystatechange = handleResponse;
    11. req.open("GET", "func.php");
    12. //Jetzt die Daten per Post übermitteln
    13. req.send("name="+document.Formular.User.value+"&wohnort="+document.Formular.Ort.value);
    14. //Und die Funktion abbrechen, damit die Seiten nicht gewechselt wird
    15. return false;
    16. }
    17. function handleResponse() {
    18. if ((req.readyState == 4) && (req.status == 200)) {
    19. document.getElementById(update[0]).innerHTML = "Daten gespeichert";
    20. }
    21. }
    22. </script>
    23. </head>
    24. <body>
    25. <form name="Formular" action="test.html" method="post" onsubmit="return saveRequest()">
    26. Name: <input type="text" size="40" name="User">
    27. Wohnort: <input type="text" size="40" name="Ort">
    28. E-Mail: <input type="text" size="40" name="Mail">
    29. Alter: <input type="text" size="40" name="Alter">
    30. Formular: <input type="submit" value="Absenden"><input type="reset" value="Abbrechen">
    31. Zum Absenden muss eine Internet-Verbindung bestehen!
    32. </form>
    33. </body>
    34. </html>
    Alles anzeigen