Frage

Ich bin relativ neu in Web-Anwendungsprogrammierung so dass ich diese Frage hoffen, nicht für jedermann ist zu einfach.

Ich habe eine HTML-Seite mit einem Formular ein Dojox Datagrid (v1.2), gefüllt mit Reihen von Beschreibungen für verschiedene Lebensmittel-Elemente enthält. Nachdem der Benutzer das Element wählt er interessiert ist, klickt er auf die Schaltfläche „Senden“.

An diesem Punkt kann ich die JavaScript-Funktion erhalte die Artikel ID-Nummer als JavaScript-Variable zu speichern, aber ich weiß nicht, wie diese ID auf die nachfolgenden HTML-Seite zu übergeben.

Wenn ich nur die ID als URL Query-String-Parameter übergeben? Gibt es noch andere bessere Möglichkeiten?

EDIT: Der gesamte Prozess ist wie ein Einkaufswagen. Der Benutzer wird das Element aus dem Raster auswählen und dann auf der nächsten Seite wird der Benutzer einige Details ausfüllen und dann Kasse.

Ich sollte auch erwähnen, dass ich mit Grails so wird dies in einer APS-Seite geschieht aber derzeit nur enthält HTML.

War es hilfreich?

Lösung

Sie könnten nur ein verstecktes Eingabefeld verwenden; das wird als Teil der Form übertragen werden.

<html>
  <head>
  </head>
  <body>
    <script type="text/javascript">
      function updateSelectedItemId() {
        document.myForm.selectedItemId.value = 2;
        alert(document.myForm.selectedItemId.value);

       // For you this would place the selected item id in the hidden
       // field in stead of 2, and submit the form in stead of alert
      }
    </script>

    Your grid comes here; it need not be in the form

    <form name="myForm">
      <input type="hidden" name="selectedItemId" value="XXX">
      The submit button must be in the form.
      <input type="button" value="changeSelectedItem" onClick="updateSelectedItemId()">
    </form>
  </body>
</html>

Andere Tipps

Es ist gut, aber besser ist es, einige Skriptsprachen wie JSP zu verwenden, PHP, ASP .... und Sie können einfach POST verwenden und Methoden GET.

Die beste Methode (imho) ist es in der URL enthalten

href = "http: //NewPage.htm var = value";

encodeURIComponent ein String-Wert

Eine Möglichkeit, über Variablen senden mit POST zu einer anderen Seite ist den Link zu der nachfolgenden Seite einer einreichen Eingabe auf einem Formular zu machen, wo die Aktion Attribut Ihre Zielseite ist. Für jede Variable, die Sie haben, können Sie in dieser Form über die Eingänge von Attributtyp „versteckt“ sind, so dass nur die Schaltfläche sichtbar.

Eine weitere Option ist, um dynamisch Links zu erzeugen auf der Seite mit so etwas wie PHP, wo man im Grunde die aktuellen GET-Abfragen neu zu besiedeln.

Schließlich können Sie immer speichern diese Informationen in der PHP-Array $ _SESSION und müssen sich keine Sorgen über ständig diese Variablen durch Site-Navigation übergeben.

Ihre Wahl hängt davon ab, wie viele Navigationsmöglichkeiten gibt es, wo man die gleichen Variablen halten mag. Es wird auch davon abhängen, wie sicher Sie Ihr Back-End sein mögen und die Menge, die Sie auf den erweiterte Web-Benutzer offen zu legen mögen.

Wenn Sie nur gehen, um die ID auf den folgenden Seiten müssen, dann können Sie die ID als Abfrage-String-Parameter übergeben.

Aber wird es Zeiten geben, wenn Sie ein wenig haarig müssen mehr Informationen und Leiten einer Vielzahl von Parametern auf verschiedenen Seiten und mit Relais auf unterschiedliche Parametersätze für verschiedene Seiten halten kann. Wenn dies der Fall ist, würde ich vorschlagen, dass Sie auf dem Formular ein verstecktes Feld halten und ein Argument Objekt erstellen, das jedes Ihrer Parameter speichert. Serialisiert wird das Argument Objekt mit JSON und speichern diese in ihrem versteckten Feld. Stellen Sie das Formular zurück an den Server. Wenn die nächste Seite geladen wird, um das Objekt deserialisiert und die Werte abrufen Sie benötigen.

Unter der Annahme, dass Sie zur Verwendung von HTML-Seiten beschränkt sind, denke ich, der beste Ansatz, um die ID zusammen auf dem Query-String auf die nächste Seite passieren würde. Es ist relativ einfach, diesen Wert zu ziehen, auf der nächsten Seite aus dem Query-String zurück. Wenn Sie ein wenig mehr verstohlen über das Bestehen der Variable sein müssen (oder müssen Sie die Variable für mehr als eine Seite bestehen), können Sie auch ein Cookie gesetzt und empfangen werden es auf der nächsten Seite.

Da Sie dies versuchen, in einer Grails-Anwendung zu tun haben Sie haben eine Wahl von Flash den Spielraum. Dies könnte keinen Sinn machen, wenn Sie direkt von einer HTML-Seite zum nächsten gehen wollen als der Umfang in einem Controller definiert werden würde. Wenn Sie brauchen, um zwischen den Anforderungen jeder Art von Verarbeitung nicht zu tun, würde ich vorschlagen, ein verborgenes Formularfeld verwenden es einfach zu halten.

http://grails.org/Controllers+-+Controller+Scopes

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top