[forms] Usa GET o POST per un modulo di ricerca


Answers

Per indirizzare indirettamente la tua domanda, se dovessi affrontare un modulo di 100 campi da compilare su una pagina, molto probabilmente chiuderei il mio browser, sembra un completo incubo di usabilità.

La mia risposta è, se c'è il pericolo che mi stia avvicinando a quel limite per l' uso normale del modulo, probabilmente sono Doing It Wrong.

In ordine di preferenza, lo farei

  1. Suddividere il modulo e utilizzare una conservazione dello stato sul lato server
  2. Passa a POST, quindi genera e reindirizza a un URL più breve su POST che ha risolto lo stesso risultato
  3. Abbandonare ;)
Question

Ho un paio di moduli di ricerca, 1 con ~ 50 campi e l'altro con ~ 100. In genere, come dice la specifica HTML, eseguo ricerche utilizzando il metodo GET in quanto non viene modificato alcun dato. Non ho ancora incontrato questo problema, ma mi chiedo se esaurirò presto lo spazio dell'URL?

Il limite di Internet Explorer è 2083 caratteri. Altri browser hanno un limite molto più alto . Sto eseguendo Apache, quindi il limite è di circa 4000 caratteri, che IIS è 16384 caratteri.

A 100 campi, diciamo che la lunghezza media del nome del campo di 10 caratteri, che è già 5000 caratteri ... incredibile sul modulo da 100 campi, non ho ancora avuto alcun errore. (25% dei campi sono selezioni multiple, quindi la lunghezza del campo è molto più lunga.)

Quindi, mi sto chiedendo quali sono le mie opzioni. (Accorciare i moduli non è un'opzione.) Ecco le mie idee:

  • Usa POST. Non mi piace così tanto perché al momento gli utenti possono aggiungere ai segnalibri le loro ricerche ed eseguirle di nuovo in seguito - una caratteristica davvero carina.
  • Avere il ciclo in JavaScript attraverso il modulo per determinare quali campi sono diversi da quelli predefiniti, compilare un altro modulo e inviarlo. L'utente vorrebbe ovviamente aggiungere la versione abbreviata.

Altre idee?

Inoltre, qualcuno sa se la lunghezza è la lunghezza codificata o semplicemente il testo?

Sto sviluppando in PHP, ma probabilmente non fa la differenza.

Modifica: non riesco a rimuovere alcun campo; Non riesco ad abbreviare il modulo. Questo è ciò che il cliente ha chiesto e spesso usano una serie di campi, nelle diverse categorie. So che è difficile pensare a un modulo che sia bello con questi molti campi, ma gli utenti non hanno problemi a capire come funziona.




Ottenere può avere un vantaggio se i risultati della ricerca possono essere condivisi, in caso di richiesta post se si invia il collegamento a qualcuno, quella persona non vedrà alcun risultato di ricerca




Inoltre, qualcuno sa se la lunghezza è la lunghezza codificata o semplicemente il testo?

La mia ipotesi era per la lunghezza codificata. Ho fatto un semplice test: una textarea e un pulsante di invio a un semplicistico script PHP.
Ha caricato la pagina in IE6, incollato del testo francese nella textarea, 2000 caratteri. Se premo il pulsante di invio, niente. Ho dovuto ridurre la lunghezza del testo per poter inviare.

In altre parole, il limite di 2083 caratteri corrisponde esattamente alla lunghezza massima dell'URL trovato nella barra degli indirizzi dopo aver inviato la richiesta GET.

Vorrei andare per la soluzione JavaScript: su inviare, analizzare il modulo, creare un modulo secondario con attributi hidden e inviarlo.

Alcune strategie per accorciare l'output:

  • Come fai notare, puoi già saltare tutti i valori rimasti ai valori predefiniti (nessun campo, nessun valore).
  • Se hai una forma come quella di Ricerca nei forum di elaborazione , puoi raggruppare tutti gli stati delle caselle di controllo solo in una variabile, ad es. usando la codifica della lettera.
  • Utilizza gli attributi di value breve (in select per esempio).

Nota: se la pagina di ricerca è in realtà composta da più moduli indipendenti, in cui gli utenti riempiono solo una sezione o un'altra, è possibile creare diversi moduli separati.
Potrebbe non essere applicabile al tuo caso e potrebbe sembrare ovvio, ma vale la pena menzionarlo per il record ... ^ _ ^




Se non ti dispiace usare javascript, potresti farlo calcolare la lunghezza della stringa di query e se è troppo lungo, passa a un post. Quindi disporre di una sorta di mapper URL per consentire loro di aggiungere segnalibri a queste ricerche pubblicate.






Related



Tags

forms   post   get