2012-01-27 11 views
8

Estoy tratando de enviar una página a sí mismo sin perder la cadena de consulta actual de la página.Envío de formulario con una cadena de consulta de? Key = val ya en el atributo de acción ignora esa cadena de consulta

Así que la página es sb.local/sb/cat.php?brandcode=JM&t=cat_items Salgo de la cadena de consulta y la vuelvo a colocar en el formulario html para conservar los parámetros. Esta es la forma resultante:

<form id="brand-select" method="get" action="?brandcode=JM&t=cat_items" name="brand-select"> 
Brand: 
<select id="brandcode" style="width:207px" tabindex="3" name="brandcode" required=""> 
<option value=""></option> 
<option class="brand-option" value="AX" data-brandid="110"> Aetrex </option> 
<option class="brand-option" value="AL" data-brandid="12"> Alden </option> 
<option class="brand-option" value="ETC" data-brandid="11"> Etc </option> 
</select> 
<input type="submit" value="go"> 
</form> 

Cuando envíe el formulario por la elección de la lista desplegable para Aetrex (valor AX), sin embargo, se va a un URL:

sb.local/sb/cat.php?brandcode=AX en otras palabras, se corta fuera de los "t = cat_items" que está en la acción. También corta el "brandcode = JM", pero casi lo espero porque son duplicados.

Eso no es lo que esperaba, esperaba que si hubiera una cadena de consulta en el atributo de acción, anexaría valores de formulario a esa cadena de consulta (por ejemplo, sb.local/sb/cat.php?brandcode=JM&t=cat_items&brandcode=AX. En su lugar, parece reemplazar la cadena de consulta por completo con solo . elementos que están en la forma

es la acción forma no atribuye utilizable para almacenar los parámetros de consulta, única información más básica url

Editar:? Nota que puedo solucionar este analizando todos los parámetros y luego poniendo cada parámetro en su propio campo oculto manualmente, a excepción de cualquier parámetro que quiera permitir que cambie, estaba solo esperaba que hubiera algún tipo de forma más simple.
Probé con una cadena de consulta no conflictiva y que fue reemplazada en su totalidad incluso cuando no había un conflicto (en Firefox), por lo tanto, ¿parece que las cadenas de consulta son inútiles en el atributo de acción de get forms? O me estoy perdiendo algo.

+0

Posible duplicado de [enviar un formulario GET con parámetros de cadena de consulta y desaparecen los parámetros ocultos] (http://stackoverflow.com/questions/1116019/submitting-a-get-form-with-query-string-params-and -hidden-params-disappear) – isherwood

Respuesta

9

Sé que esta es una vieja pregunta, pero la solución es bastante simple (¡y ordenada!).

Todo lo que tienes que hacer es enviar la querystring con campos de entrada ocultos en el formato name="key" y value="value".

brandcode = JM & t = cat_items serían "traducir" en:?

<input type="hidden" name="brandcode" value="JM" /> 
<input type="hidden" name="t" value="cat_items" /> 

eliminar completamente la cadena de consulta de su action.

+0

Como menciono en la parte inferior de la pregunta, conozco esa solución manual, pero requiere analizar todos los parámetros de la url y sus valores, luego filtrar los específicos que cambian [aquí es donde surge la dificultad], y luego bucle sobre ellos en la forma de ponerlos en entradas ocultas. – Kzqai

+0

Sí, así es como lo haría hoy, o de lo contrario a través de lindas babosas url si realmente quisiera un acceso estable. – Kzqai

+0

En realidad, esto no es muy difícil de generar. Simplemente itere a través de $ _GET (para php) o Request.QueryString (para VBScript/VB.Net) y da salida a todas las claves y valores como entradas ocultas. –

1

Puede utilizar el método "POST" en lugar del método "GET" para el envío del formulario, si el método no es importante.

+0

Hmmm, observado. En este caso, traté de usar get para obtener la máxima transparencia (cada cambio recibe un cambio de URL correspondiente), pero tal vez esta desconexión se deba a que estoy abusando de los métodos normales de usar un formulario haciendo que sea un formulario get ... – Kzqai

Cuestiones relacionadas