2009-12-29 3 views
15

Ich habe ein HTML-Formular, das den Aktionsparameter nach dem "?" markieren - das ist nicht das gewünschte Verhalten, das ich suche.HTML-Formulare - Eingabetyp senden Problem mit action = URL, wenn URL index.aspx enthält

Hier ist eine repräsentative HTML-Schnipsel:

<form action="http://spufalcons.com/index.aspx?tab=gymnastics&path=gym"> 
    <input type="submit" value="SPU Gymnastics"/> 
</form> 

In diesem Fall wird die Submit-Button gelangen Sie auf die "http://www.spufalcons.com/index.aspx" Seite, effektiv ignoriert Parameter "tab = Gymnastik & path = Turnhalle?". Es scheint, dass alle HTML- und PHP-Seiten, auf die in der action = URL verwiesen wird, wie erwartet funktionieren. Dieses Verhalten ist in allen gängigen Browsern (IE, FF, Safari, Chrome, Opera) konsistent.

Hat jemand dieses Problem schon einmal gesehen? Oder können Sie eine Alternative und/oder Workaround vorschlagen, die mit meinem "reinen" CSS/HTML/PHP-Webentwicklungsansatz vereinbar sind? Ich habe versucht, die Sonderzeichen durch HTML-Entity-Werte ohne Auswirkung zu ersetzen. Ich möchte wirklich nicht verwenden, meine CSS-styled Übermittlungsknöpfe aufzugeben, indem ich Javascript oder Knopf PNGs oder Bildkarten verwende.

Umwelt:

  • Webserver: Apache 2.2.14
  • PHP: 5.2.10
  • Betriebssystem: Mac OS X 10.5.8
  • HTML-Dokument Info:
  • <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">

TIA - Trent

+1

Klingt komisch. Sind Sie sicher, dass das Formular tatsächlich an die falsche URL gesendet wird, oder ist es möglich, dass der POST korrekt ist, aber die .ASPX-Seite eine Weiterleitung ausführt? –

+0

Wenn Sie Apache verwenden und müssen dieses Problem zu umgehen [es gibt eine in einer anderen Antwort Stackoverflow] [1] [1]: http://stackoverflow.com/questions/1116019/submitting-a-get- form-with-query-string-params-und-hidden-params-disappear/# 16415773 – wanis

Antwort

26

die Abfrage Argumente in versteckten Eingabefelder Put:

<form action="http://spufalcons.com/index.aspx"> 
    <input type="hidden" name="tab" value="gymnastics" /> 
    <input type="hidden" name="path" value="gym" /> 
    <input type="submit" value="SPU Gymnastics"/> 
</form> 
+2

Wenn Sie möchten, dass "tab = gymnastics & path = gym" in der URL angezeigt wird, fügen Sie method = "GET" zu Ihrem Formular-Tag hinzu Gut. – Annie

+2

@Annie: Das 'method' Attribut ist nicht erforderlich; 'method =" get "' ist impliziert. – Gumbo

+0

Wenn Ihr "Verzeichnis-Index" index.aspx (auf Apache-Konfiguration) lautet: Kann ohne URL posten.

blabla
dsgdfg

1

Dies scheint meine "bevorzugte" Lösung zu sein:

<form action="www.spufalcons.com/index.aspx?tab=gymnastics&path=gym" method="post"> <div> 
<input type="submit" value="Gymnastics"></div> 

Entschuldigung für das Präsentationsformat - Ich versuche immer noch zu lernen, wie man es macht se dieses Forum ....

Ich habe eine Follow-up-Frage. Wenn ich meine MySQL-Datenbank von URLs anschaue, dann scheinen ~ 30% der URLs diese Post/div-Wrapper-Methode zu verwenden. Dies lässt ~ 70% übrig, die das Attribut "post" nicht akzeptieren können. Zum Beispiel:

<form action="http://www.google.com" method="post"> 
    <div> 
    <input type="submit" value="Google"/> 
    </div></form> 

funktioniert nicht. Haben Sie eine Empfehlung, wie Sie diesen Get/Post-Condition-Test am besten durchführen? Von meinem Kopf her vermute ich, dass PHP die Existenz des "?" Das Zeichen in der URL ist möglicherweise meine beste Vorgehensweise, obwohl ich nicht sicher bin, wie das HTML-Formular strukturiert werden soll, um dies zu erreichen.

Vielen Dank!

0

Ich habe CSS-Styling auf ein verankertes HREF-Attribut angewendet, das die benötigten Push-Button-Verhaltensweisen (Hover, Active, Hintergrundfarbe, etc.) emuliert. HTML-Markup ist viel einfacher a-n-d eliminiert die Komplexität von get/post, die mit der Verwendung eines formularbasierten Ansatzes verbunden ist.

<a class="GYM" href="http://www.spufalcons.com/index.aspx?tab=gymnastics&path=gym">Gymnastics</a> 
4

Verwenden method = POST, dann wird es Schlüssel & Wert übergeben.