2009-12-29 14 views
15

Mam formularz HTML, który obcina parametr akcji po znaku "?" mark - co NIE jest pożądanym zachowaniem, którego szukam.Formularze HTML - typ danych przesyłaj problem z działaniem = URL, gdy URL zawiera index.aspx

Oto przedstawiciel kod HTML:

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

W tym przypadku przycisk submit przeniesie Cię na stronę "http://www.spufalcons.com/index.aspx", skutecznie ignoruje parametr "tab = gimnastyka & path = siłownię?". Wygląda na to, że wszystkie strony HTML i PHP wymienione w działaniu = URL działają zgodnie z oczekiwaniami. To zachowanie jest spójne we wszystkich głównych przeglądarkach (IE, FF, Safari, Chrome, Opera).

Czy ktoś wcześniej widział ten problem? Lub może zaproponować alternatywę i/lub sposób postępowania zgodny z moim "czystym" podejściem do projektowania stron internetowych CSS/HTML/PHP? Próbowałem zastąpić znaki specjalne wartościami encji HTML bez wpływu. NAPRAWDĘ nie chcę tego robić, porzuć moje przyciski do przesyłania w stylu CSS za pomocą JavaScript lub przycisków PNG lub map obrazów.

Środowisko:

  • Serwer WWW: Apache 2.2.14
  • PHP: 5.2.10
  • OS: Mac OS X 10.5.8
  • HTML informacji Dokument:
  • <!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

Brzmi dziwnie. Czy na pewno formularz rzeczywiście POSTs do niewłaściwego adresu URL, czy jest możliwe, że POST jest poprawny, ale strona .ASPX wykonuje przekierowanie? –

+0

Jeśli używasz apache i potrzebują obejścia [istnieje jeden w innym stackoverflow odpowiedzi] [1] [1]: http://stackoverflow.com/questions/1116019/submitting-a-get- form-with-query-string-params-and-hidden-params-disappear/# 16415773 – wanis

Odpowiedz

26

Put argumenty kwerendy w ukrytych pól wejściowych:

<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

Jeśli chcesz, aby "tab = gimnastyka i ścieżka = siłownia" pojawiała się w pasku adresu, dodaj metodę = "GET" do znacznika formularza jako dobrze. – Annie

+2

@Annie: Atrybut 'method' nie jest wymagany; 'method =" get "' implikowane. – Gumbo

+0

, jeśli twoim "Directory Index" jest index.aspx (na apache config): Może publikować bez adresu URL.

bla bla
dsgdfg

1

To wydaje się być moim "preferowane" rozwiązanie:

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

Przepraszam za format prezentacji - nadal próbuję się uczyć se to forum ....

Mam kolejne pytanie. Patrząc na moją bazę danych MySQL z adresami URL, wydaje się, że ~ 30% adresów URL będzie musiało korzystać z tej metody pakowania po/div. Pozostawia to ~ 70%, które nie mogą zaakceptować atrybutu "post". Na przykład:

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

nie działa. Czy masz zalecenie, jak najlepiej radzić sobie z tym testem warunku get/post. Z góry mojej głowy Zgaduję, że za pomocą PHP, aby ocenić istnienie "?" znak w adresie URL może być moim najlepszym podejściem, chociaż nie jestem pewien, jak sformatować formularz HTML, aby to osiągnąć.

Dziękuję!

0

Zastosowałem stylizację CSS do zakotwiczonego atrybutu HREF w pełni emulując pożądane zachowania przycisków (najeżdżanie, aktywny, kolor tła itp.). Znaczniki HTML są znacznie prostsze, a-n-d eliminuje złożoność get/post związaną z zastosowaniem podejścia opartego na formularzu.

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

Zastosowanie method = POST to będzie przechodzić kluczową & wartość.