Tengo un par de formularios de búsqueda, 1 con ~ 50 campos y el otro con ~ 100. Normalmente, como dice la especificación HTML, realizo búsquedas utilizando el método GET ya que no se modifican datos. Todavía no me he encontrado con este problema, pero me pregunto si pronto me quedaré sin espacio para URL.Usar GET o POST para un formulario de búsqueda
El límite de Internet Explorer es de 2083 caracteres. Otros navegadores, tienen un much higher limit. Estoy ejecutando Apache, por lo que el límite es de alrededor de 4000 caracteres, que IIS tiene 16384 caracteres.
En 100 campos, digamos una longitud promedio de nombre de campo de 10 caracteres, eso ya son 5000 caracteres ... increíble en el formulario de campo 100, no he tenido ningún error todavía. (25% de los campos son seleccionados múltiples, por lo que la longitud del campo es mucho más larga.)
Entonces, me pregunto cuáles son mis opciones. (Acortar los formularios no es una opción.) Aquí mis ideas:
- Usar POST. No me gusta tanto porque, en este momento, los usuarios pueden marcar sus búsquedas y volver a realizarlas más tarde, una característica muy buena.
- Haga que JavaScript recorra el formulario para determinar qué campos son diferentes de los predeterminados, llene otro formulario y envíelo. El usuario, por supuesto, marcará la versión abreviada.
¿Alguna otra idea?
Además, ¿alguien sabe si la longitud es la longitud codificada o simplemente texto sin formato?
Estoy desarrollando en PHP, pero probablemente no haga la diferencia.
Editar: No puedo eliminar ningún campo; No puedo acortar el formulario. Esto es lo que el cliente ha pedido y a menudo usan una variedad de campos, en las diferentes categorías. Sé que es difícil pensar en una forma que se vea bien con tantos campos, pero los usuarios no tienen problemas para entender cómo funciona.
Si elige este método, asegúrese para devolver una respuesta "303 Ver otros" desde el POST, para hacer que el navegador obtenga la solicitud redirigida con un GET. De lo contrario, podría intentar hacer una POST a la URL redirigida. –