Siri: Formular verwenden oder nicht

Hallo,

ich hab ein kleines Kalendermodul programmiert. Es wird die Seite kalenderseite.html aufgerufen. Wenn das Servlet keine Parameter mitbekommt, dann wird das tagesaktuelle Datum verwendet. Ausgegeben werden ein Kalenderblatt, passend zum aktuellen Monat/Tagesdatum und eventuell vorhandene Kalendereinträge. Soweit so gut.

Der Benutzer kann per Klick auf das Kalenderblatt ein neues Datum auswählen. Es wird ein JS aufegerufen, dass die übergebenen Datumsparameter in ein Formular (hidden fields) einträgt und damit wieder kalenderseite.html aufruft (Methode POST). Warum per Formular? Ich finde einfach den Rattenschwanz in der URL unschön, wenn man es so aufruft (z.B. per Link). So weit auch gut.

Jetzt soll der Anwender natürlich auch die Möglichkeit haben, Termine einzutragen. Dialog, Eintrag per AJAX, Rückmeldung vom Server, Dialog schließen -> aktuelle Seite per location.reload aktualisieren. Klar was jetzt kommt: Möchten Sie das Formular erneut absenden? Ja, will ich und zwar ohne Rückfrage. Wenn ich jetzt auf Methode GET gehe, dann habe ich genau den Rattenschwanz an Parametern in der URL, den ich vermeiden will. Und die aufrufende Seite über das DOM per JS zu aktualisieren finde ich übertrieben, wo doch ein reload genau das macht was ich will...

Hab ich schon einen Fehler im Ansatz? oder gibt's nur die beschriebenen Varianten?

Grüße
Siri

  1. Wenn Du die Information doch sowieso in Hiddenfields unterbringst, warum benutzt Du dann "location.reload()" und nicht "formular.submit()"
    [link]http://de.selfhtml.org/javascript/objekte/forms.htm#submit[/link]

    Hallo,

    ich hab ein kleines Kalendermodul programmiert. Es wird die Seite kalenderseite.html aufgerufen. Wenn das Servlet keine Parameter mitbekommt, dann wird das tagesaktuelle Datum verwendet. Ausgegeben werden ein Kalenderblatt, passend zum aktuellen Monat/Tagesdatum und eventuell vorhandene Kalendereinträge. Soweit so gut.

    Der Benutzer kann per Klick auf das Kalenderblatt ein neues Datum auswählen. Es wird ein JS aufegerufen, dass die übergebenen Datumsparameter in ein Formular (hidden fields) einträgt und damit wieder kalenderseite.html aufruft (Methode POST). Warum per Formular? Ich finde einfach den Rattenschwanz in der URL unschön, wenn man es so aufruft (z.B. per Link). So weit auch gut.

    Jetzt soll der Anwender natürlich auch die Möglichkeit haben, Termine einzutragen. Dialog, Eintrag per AJAX, Rückmeldung vom Server, Dialog schließen -> aktuelle Seite per location.reload aktualisieren. Klar was jetzt kommt: Möchten Sie das Formular erneut absenden? Ja, will ich und zwar ohne Rückfrage. Wenn ich jetzt auf Methode GET gehe, dann habe ich genau den Rattenschwanz an Parametern in der URL, den ich vermeiden will. Und die aufrufende Seite über das DOM per JS zu aktualisieren finde ich übertrieben, wo doch ein reload genau das macht was ich will...

    Hab ich schon einen Fehler im Ansatz? oder gibt's nur die beschriebenen Varianten?

    Grüße
    Siri

    1. Sorry für den vermurksten "[link]" :-(

    2. Hallo,

      Wenn Du die Information doch sowieso in Hiddenfields unterbringst, warum benutzt Du dann "location.reload()" und nicht "formular.submit()"
      [link]http://de.selfhtml.org/javascript/objekte/forms.htm#submit[/link]

      Ja, das ist praktikabel! Was mich stört: Da es noch mehrere Module gibt habe ich ein JS geschrieben, dass das übergeordnet regelt:

      1. Dialog aufrufen
      2. Änderung zum Server
      3. Bei positiv Meldung: Dialog schließen, aufrufende Seite neu laden (aktualisieren). Für das Formular ist jetzt eine "Sonderlocke" fällig (siehe auch Dein Posting: Wiederverwendbarkeit ;-))

      Aber da noch niemand eine Idee hatte, das grundlegend anders zu machen, wird's wohl darauf hinaus laufen. Danke!

      Grüße
      Siri

  2. Hi,

    da hat wohl einer meine Idee geklaut... :D Egal, habe ich sowieso verworfen.

    Der Benutzer kann per Klick auf das Kalenderblatt ein neues Datum auswählen. Es wird ein JS aufegerufen, dass die übergebenen Datumsparameter in ein Formular (hidden fields) einträgt und damit wieder kalenderseite.html aufruft (Methode POST). Warum per Formular? Ich finde einfach den Rattenschwanz in der URL unschön, wenn man es so aufruft (z.B. per Link). So weit auch gut.

    Mach es doch per Ajax, dann sparst du dir das Formular.

    Jetzt soll der Anwender natürlich auch die Möglichkeit haben, Termine einzutragen. Dialog, Eintrag per AJAX, Rückmeldung vom Server, Dialog schließen -> aktuelle Seite per location.reload aktualisieren. Klar was jetzt kommt: Möchten Sie das Formular erneut absenden? Ja, will ich und zwar ohne Rückfrage. Wenn ich jetzt auf Methode GET gehe, dann habe ich genau den Rattenschwanz an Parametern in der URL, den ich vermeiden will. Und die aufrufende Seite über das DOM per JS zu aktualisieren finde ich übertrieben, wo doch ein reload genau das macht was ich will...

    Diesen Schritt würde ich mit Hilfe von PHP (oder sonst einer Serverseitigen Sprache lösen). Anwender klickt auf Abschicken (Post), Anfrage geht an den Server, Seite wird neu geladen, fertig. Ajax würde ich hier nicht nehmen. Im Allgemeinen, Get-Parameter sind zwar unschön aber für so Zwecke sehr brauchbar. Guck dich mal um, viele namhafte Seiten verwenden diese.

    Zur Not, kannste diese später z.b. per mod_rewrite entfernen.

    Hab ich schon einen Fehler im Ansatz? oder gibt's nur die beschriebenen Varianten?

    Das glaub ich nicht. Der Grundgedanke scheint ganz brauchbar zu sein. An einige Stellen gibt es aber bestimmt Verbesserungsbedarf (wie immmer).

    Gruß
    Jackson

    1. Hallo,

      Mach es doch per Ajax, dann sparst du dir das Formular.

      Den Aufwand halte ich für übertrieben. Es geht ja nur um den Aufruf einer Seite mit dem entsprechenden Datumsparameter.

      Diesen Schritt würde ich mit Hilfe von PHP (oder sonst einer Serverseitigen Sprache lösen). Anwender klickt auf Abschicken (Post), Anfrage geht an den Server, Seite wird neu geladen, fertig. Ajax würde ich hier nicht nehmen. Im Allgemeinen, Get-Parameter sind zwar unschön aber für so Zwecke sehr brauchbar. Guck dich mal um, viele namhafte Seiten verwenden diese.

      Genauso mach ich das ;-) "Seite wird neu geladen, fertig" ist das Problem, denn dann fragt der Browser: "Wollen Sie das Formular erneut senden?"

      Grüße
      Siri

  3. hi,

    Der Benutzer kann per Klick auf das Kalenderblatt ein neues Datum auswählen.

    Idee: Wenn der was eintragen will, schalte die Ansicht um in einen sog. Edit-Mode, das ist ein Formular mit den entsprechenden Eingabefeldern. Wenn beim Submit (POST) alles gut gegangen ist, wird ein redirect (HTTP-Location-Header) gemacht wieder auf die Übersichtseite. Die kann er dann reloaden so oft er will ;)

    Und das alles sollte auch ohne Cookies und JS tun.

    Hotti

    1. Hallo,

      Der Benutzer kann per Klick auf das Kalenderblatt ein neues Datum auswählen.

      Idee: Wenn der was eintragen will, schalte die Ansicht um in einen sog. Edit-Mode, das ist ein Formular mit den entsprechenden Eingabefeldern. Wenn beim Submit (POST) alles gut gegangen ist, wird ein redirect (HTTP-Location-Header) gemacht wieder auf die Übersichtseite. Die kann er dann reloaden so oft er will ;)

      Das habe ich jetzt nicht verstanden... Mein Problem ist ja nicht, das Kalendardatum zu wechseln, sondern nach der Bearbeitung die Seite zu aktualisieren (reload). Der Dialog zum Bearbeiten befindet sich auf der selben Seite in einem Div.

      Grüße
      Siri

      1. hi,

        Idee: Wenn der was eintragen will, schalte die Ansicht um in einen sog. Edit-Mode, das ist ein Formular mit den entsprechenden Eingabefeldern. Wenn beim Submit (POST) alles gut gegangen ist, wird ein redirect (HTTP-Location-Header) gemacht wieder auf die Übersichtseite. Die kann er dann reloaden so oft er will ;)

        Das habe ich jetzt nicht verstanden... Mein Problem ist ja nicht, das Kalendardatum zu wechseln, sondern nach der Bearbeitung die Seite zu aktualisieren (reload). Der Dialog zum Bearbeiten befindet sich auf der selben Seite in einem Div.

        Genau das ist das Problem: Du hast nur _eine_ Ansicht und nur _eine_ mögliche Response-Seite.

        Ho Ch'ti