Florian Trück: URI Parameter in variablen kopieren...

Hallo,
kurze einleitung: wenn man ein Formular erstellt hat, und dieses absendet, werden in der URI die namen der eingabefelder und die werte angehängt.

Mein Problem ist nun: wie kann ich diese Parameter (derweilen nur einer) in eine Variable fassen?

Leider komme ich da nicht darauf...
danke schon mal im voraus. Gruß Florian Trück...

  1. Hi,

    Mein Problem ist nun: wie kann ich diese Parameter (derweilen nur einer) in eine Variable fassen?

    location.search analysieren.

    Cheatah

  2. Hallo.

    kurze einleitung: wenn man ein Formular erstellt hat, und dieses absendet, werden in der URI die namen der eingabefelder und die werte angehängt.

    Mein Problem ist nun: wie kann ich diese Parameter (derweilen nur einer) in eine Variable fassen?

    Also. Mit location.search (http://selfhtml.teamone.de/javascript/objekte/location.htm#search) kannst du abfragen, was hinter dem Fragezeichen der URI steht.
    Darin ist das Fragezeichen aber inbegriffen.
    Um das Fragezeichen wegzukriegen, nehmen wir substr() (http://selfhtml.teamone.de/javascript/objekte/string.htm#substring) zur Hilfe un weisen das ganze als Wert einer Variablen zu, dad sieht dann so aus:
    variable = window.location.search.substring(1,window.location.search.length);

    Gruß
    Norbert

    1. Gut. nun habe ich aber noch das Problem, dass bei meinem Versuch, überhaupt keine URI Parameter angegeben werden, sondern im POST header stehen. wie mache ich das, dass entweder der Parameter in der URI nach dem senden steht, oder dass ich den POST header auslesen kann, so wie in PHP "httpvars" benutzt werden können.

      In php ist es einfach, jeder Prarmeter ist nacher eine Variable, ob dieser nun in der URI steht, oder nicht. aber in Javascript ist dies nicht der fall.

      Nun suche ich nach einem Weg, an diesen POST parameter ran zukommen...

      der Code sieht so aus:

      <form METHOD="POST" Name="Dos">
        <p><b><font face="Arial" size="2">C:></font></b>
        <input type="text" name="eingabe" size="20" style="border-width:0; padding:0; font-size:10pt; font-weight:bold; color:#C0C0C0"><font size="4"><br>
        <script language="Javascript">
        var test;
        test=variable=window.location.search.substring(8,window.location.search.length);
      ...........

      das problem ist eben die URI

      1. Hi,

        Gut. nun habe ich aber noch das Problem, dass bei meinem Versuch, überhaupt keine URI Parameter angegeben werden, sondern im POST header stehen.

        ja, dann hast Du in der Tat ein Problem. Lösung: Nimm kein JavaScript.

        Übrigens stehen POST-Parameter nicht im Header, sondern im Body des Request. Das ist auch der Grund, weshalb Du mit JavaScript nicht drauf zugreifen _kannst_: Der Server schickt den Request-Body (sinnvollerweise) nicht zurück.

        In php ist es einfach, jeder Prarmeter ist nacher eine Variable,

        Sicherheitsrisiko. Die Parameter stehen in $HTTP_GET_VARS und $HTTP_POST_VARS. Vermeide dynamisch generierte Variablennamen - besonders wenn sie aus mehreren Quellen stammen können.

        Cheatah

        1. nun, ich weis, dass javascript nicht die Beste Lösung ist, aber da ich bisher noch keinen Host gefunden hatte, der Schnell genug für PHP ist, nehme ich lieber JavaScript, zumal ich sicherstellen will, dass kein zusätzlicher Traffik entsteht, wie bei PHP.

          1. Hi,

            nun, ich weis, dass javascript nicht die Beste Lösung ist,

            clientseitige Lösungen sind bei dieser Problemstellung nicht nur ungünstig, sondern ausgeschlossen. Die POST-Werte landen beim Server - und bleiben da.

            aber da ich bisher noch keinen Host gefunden hatte, der Schnell genug für PHP ist,

            Hm? Dann begehst Du offenbar programmiertechnisch _erhebliche_ Fehler. PHP ist für seine Geschwindigkeit bekannt.

            Cheatah

            1. @php: stimmt. aber wenn ich es via PHP mache, muss der Browser jedesmal von neuem das Dokument anfordern. das kostet in sofern Zeit, dass ich die URI an der server sende, dieser das Dokument neu übersetzen muss, und dann wieder zurücksenden muss... Wenn ich die Lösung aber in JavaScript habe, muss sich der Server nicht mehr darum kümmern. das Dokument wird aus dem Cache geladen, weil sich nichts mehr ändert. Klar, bei grösseren Projekten verwende ich auch PHP, aber hierbei ging es mir hauptsächlich um den entstehenden Traffic, der jedesmal entsteht. nicht um den speed von PHP... :)

              @Problem: ich habe nun einen Lösung. Im Form Tag muss man nur METHOD="POST" weglassen, und schon funzt alles, wie ich es will...

              Danke nochmal, für alle, die mir dabei geholfen haben... Leute wie euch braucht diese Welt noch mehr!!!

              Gruß Florian Trück

              1. Hi,

                wenn ich es via PHP mache, muss der Browser jedesmal von neuem das Dokument anfordern. das kostet in sofern Zeit, dass ich die URI an der server sende, dieser das Dokument neu übersetzen muss, und dann wieder zurücksenden muss...

                exakt das gleiche Problem hast Du, wenn Du mit JavaScript auf location.search zugreifst. Wenn Du keinen neuen HTTP-Request machen willst, warum greifst Du dann nicht einfach auf die Formularfelder zu?

                Wenn ich die Lösung aber in JavaScript habe, muss sich der Server nicht mehr darum kümmern.

                Dafür hast Du das Problem, dass JavaScript deaktiviert oder unbekannt sein kann.

                das Dokument wird aus dem Cache geladen, weil sich nichts mehr ändert.

                Beim Absenden eines Formulars, insbesondere mit POST, wird die Seite _nicht_ aus dem Cache geladen.

                Klar, bei grösseren Projekten verwende ich auch PHP,

                Schade. Benutz doch lieber was sauberes und sicheres.

                @Problem: ich habe nun einen Lösung. Im Form Tag muss man nur METHOD="POST" weglassen, und schon funzt alles, wie ich es will...

                Dann steht implizit method="GET" drin, was das Problem auch nicht löst. Wenn es bei Dir funktioniert (ob es "funzt", sei hierbei dahingestellt), dann teste es doch mal mit einem anders konfigurierten Client.

                Danke nochmal, für alle, die mir dabei geholfen haben... Leute wie euch braucht diese Welt noch mehr!!!

                Danke!

                Cheatah