Stefan: CGI: Location: Wertübergabe an die HTML-Seite

Hallo,

in meinem CGI-Script zur Erstellung einer Bestellmail, wird eine Bestellnummer generiert.

Diese würde ich gerne auf meiner Bestätigungsseite anzeigen.

bisher wurde die Bestätigungsseite am Endedes Skrites wie folgt aufgerufen:
print "Location: $FORM{'okredirect'\n\n";

meine Idee war jetzt:
print "Location: $FORM{'okredirect'}?Bestellung=$bestell\n\n";
hat aber nicht funktioniert.

Es kommt auf der HTML-Seite nichts an - abgefragt mit:
alert(window.location.search);

Was ist falsch?

Vielen dank im Voraus!

Gruß Stefan

  1. Hi,

    meine Idee war jetzt:
    print "Location: $FORM{'okredirect'}?Bestellung=$bestell\n\n";
    hat aber nicht funktioniert.

    Was ergibt eine normale Kontrollausgabe, ohne Location: davor?

    Es kommt auf der HTML-Seite nichts an - abgefragt mit:
    alert(window.location.search);

    Wie sieht die Adresse in der Adresszeile aus, auf die dein Browser umgeleitet wird?

    MfG ChrisB

    1. Was ergibt eine normale Kontrollausgabe, ohne Location: davor?

      /bestell-ok.htm?Bestellung=1205659116

      Wie sieht die Adresse in der Adresszeile aus, auf die dein Browser umgeleitet wird?

      Da die Seite ein Teil eines Framesets ist, ändert sich die Adresszeile nicht.
      Packe ich händisch die oben genannte Zeile hinter meine Domainadresse in die Adresszeile bekomme ich den alert wie gewünscht mit "?Bestellung=1205659116".

      Noch eine Idee?

      Danke!

      Gruß Stefan

      1. Hi,

        Wie sieht die Adresse in der Adresszeile aus, auf die dein Browser umgeleitet wird?

        Da die Seite ein Teil eines Framesets ist, ändert sich die Adresszeile nicht.

        Aha!
        Solche wichtigen Informationen solltest du gleich erwaehnen.

        Packe ich händisch die oben genannte Zeile hinter meine Domainadresse in die Adresszeile bekomme ich den alert wie gewünscht mit "?Bestellung=1205659116".

        Noch eine Idee?

        Du schriebst, dass du

        alert(window.location.search);

        fuer die Kontrollausgabe verwendet hast.

        Vermutlich ist window in diesem Falle nicht *das* window-Objekt, welches du anzusprechen beabsichtigtest (eben wegen des Framesets).

        MfG ChrisB

      2. Was ergibt eine normale Kontrollausgabe, ohne Location: davor?
        /bestell-ok.htm?Bestellung=1205659116

        Dann funktioniert Dein Perl-Script und es liegt ein clientseitiges Problem vor.

        Da die Seite ein Teil eines Framesets ist, ändert sich die Adresszeile nicht.

        Hast Du ein target im <form>-Tag angegeben? Wird denn die Bestätigungsseite tatsächlich in dem Frame geladen, in dem Du es haben willst?

        Siechfred

        --
        Hinter den Kulissen passiert viel mehr, als man denkt, aber meistens nicht das, was man denkt.
  2. Moin Moin!

    Erzeuge die Bestätigungsseite direkt im CGI, statt auf eine Bestätigungsseite umzuleiten. TT2 kann hilfreich sein, wenn Du ein bestehendes Seitenlayout weiterverwenden willst.

    Alexander

    --
    Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".
    1. Erzeuge die Bestätigungsseite direkt im CGI

      Ja - ist eine Idee - habe aber noch die Hoffnung mir diese Umstellung sparen zu können.

      Danke!

      Gruß Stefan

  3. Hallo,

    in meinem CGI-Script zur Erstellung einer Bestellmail, wird eine Bestellnummer generiert.

    Diese würde ich gerne auf meiner Bestätigungsseite anzeigen.

    Ich mache das so:

    Redirection

    sub redir{
            my $url = shift;
            print "Status: 302 Moved\n";
            print "location: $url\n\n";
            return;
    }

    Und damit z.B.: redir("$ENV{SCRIPT_NAME}?quit=1");

    if(param('quit')){
     quit();
    }

    sub quit{
     # haue eine Bestätigung mit print raus
    }

    Schönen Sonntag,
    Hotte