2009-12-29 10 views
15

Tengo un formulario HTML que trunca el parámetro de acción después del "?" marca - que NO es el comportamiento deseado que estoy buscando.Formularios HTML - tipo de entrada enviar problema con action = URL cuando URL contiene index.aspx

Aquí hay un fragmento HTML representativo:

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

En este caso, el botón de enviar le lleva a la página "http://www.spufalcons.com/index.aspx", haciendo caso omiso de manera efectiva parámetro "tab = gimnasia & path = gimnasio?". Parece que todas las páginas HTML y PHP a las que se hace referencia en la acción = URL funcionan como se esperaba. Este comportamiento es constante en todos los principales navegadores (IE, FF, Safari, Chrome, Opera).

¿Alguien ha visto este problema antes? ¿O puede sugerir una alternativa y/o una solución coherente con mi enfoque de desarrollo web "puro" de CSS/HTML/PHP? He intentado reemplazar los caracteres especiales con valores de entidad HTML sin impacto. REALMENTE no quiero usar abandonar mis botones de envío con estilo CSS usando Javascript o PNG de botón o mapas de imágenes.

Medio Ambiente:

  • Servidor Web: Apache 2.2.14
  • PHP: 5.2.10
  • SO: Mac OS X 10.5.8
  • documento HTML 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

Suena extraño. ¿Está seguro de que el formulario realmente envía una POST a la URL incorrecta, o es posible que la POST sea correcta, pero la página .ASPX hace una redirección? –

+0

Si está utilizando Apache y necesita solución, [hay una en otra respuesta stackoverflow] [1] [1]: http://stackoverflow.com/questions/1116019/submitting-a-get- form-with-query-string-params-and-hidden-params-disappear/# 16415773 – wanis

Respuesta

26

Ponga los argumentos de consulta en los campos de entrada ocultos:

<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

Si desea que aparezca "tab = gymnastics & path = gym" en la barra de url, agregue method = "GET" a su etiqueta de formulario como bien. – Annie

+2

@Annie: El atributo 'method' no es obligatorio; 'method =" get "' está implícito. – Gumbo

+0

si su "Índice del directorio" es index.aspx (en la configuración de apache): puede publicar sin url.

blah blah
dsgdfg

1

Esto parece ser mi solución "preferida":

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

Perdón por el formato de presentación. Todavía estoy tratando de aprender cómo hacerlo se este foro ....

Tengo una pregunta de seguimiento. Al consultar mi base de datos MySQL de URL, parece que ~ 30% de las URL necesitarán usar este enfoque de envoltorio post/div. Esto deja ~ 70% que no puede aceptar el atributo "publicar". Por ejemplo:

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

no funciona. ¿Tiene una recomendación sobre cómo manejar mejor esta prueba de obtención/condición posterior? De repente, supongo que usar PHP para evaluar la existencia del "?" carácter en la URL puede ser mi mejor enfoque, aunque no estoy seguro de cómo estructurar el formulario HTML para lograr esto.

¡Gracias!

0

Apliqué el estilo CSS a un atributo HREF anclado emulando completamente los comportamientos de botón que necesitaba (hover, active, background-color, etc., etc.). El marcado de HTML es mucho más simple. A-n-d elimina la complejidad de obtener/publicar asociada con el uso de un enfoque basado en formularios.

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

Uso method = post entonces pasará clave valor &.

Cuestiones relacionadas