2012-01-27 11 views
8

Quindi sto tentando di inviare una pagina a se stessa mantenendo la stringa di query corrente della pagina.L'invio del modulo con una chiave? Key = stringa di query già nell'attributo di azione ignora quella stringa di query

Quindi la pagina è sb.local/sb/cat.php?brandcode=JM&t=cat_items Estraggo la stringa di query e la rimando nel modulo html per conservare i parametri. Questa è la forma risultante:

<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> 

Quando ho presentare il modulo scegliendo il menu a discesa per Aetrex (valore AX), tuttavia, si va a un URL di:

sb.local/sb/cat.php?brandcode=AX in altre parole, taglia fuori "t = cat_items" che è nell'azione. Si taglia anche il "brandcode = JM", ma mi aspetterei quasi che dal momento che sono duplicati.

che non è quello che mi aspettavo, ho previsto che se c'è una stringa di query nell'attributo action, sarebbe aggiungere valori di modulo a tale stringa query (es sb.local/sb/cat.php?brandcode=JM&t=cat_items&brandcode=AX. Invece sembra sostituire la stringa di query interamente con solo quelli . elementi che sono in forma

non è attributo utilizzabile l'azione modulo per la memorizzazione di parametri di query, solo più semplice informazioni url

Edit:? Nota che posso risolvere questo analizzando tutti i parametri e poi mettendo ogni parametro nel proprio campo nascosto manualmente, tranne per i parametri che voglio permettere di cambiare, lo ero sperando solo che esistesse un modo più semplice.
Ho eseguito il test con una stringa di query non in conflitto e che è stata completamente sostituita anche quando non c'era un conflitto (in Firefox), quindi in base a ciò sembra che le stringhe di query siano inutili nell'attributo action di get forms? O mi sta sfuggendo qualcosa.

+0

Possibile duplicato di [invio di un modulo GET con parametri stringa di query e parametri nascosti scompaiono] (http://stackoverflow.com/questions/1116019/submitting-a-get-form-with-query-string-params-and -parati nascosti-scompaiono) – isherwood

risposta

9

So che questa è una vecchia domanda, ma la soluzione è in realtà piuttosto semplice (e ordinata!).

Tutto ciò che dovete fare è inviare la querystring con campi di input nascosti nel formato name="key" e value="value".

brandcode = JM & t = cat_items avrebbero "tradurre" in:?

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

Rimuovere completamente querystring dal action.

+0

Come menzionato in fondo alla domanda, sono a conoscenza di quella soluzione manuale, ma richiede l'analisi di tutti i parametri url e dei relativi valori, quindi il filtro di quelli specifici che cambiano [questo è dove sorge la difficoltà], e quindi eseguendo il ciclo su di essi nel modulo per inserirli in input nascosti. – Kzqai

+0

Sì, questo è come lo farei oggi, o altrimenti tramite slugs piuttosto url se volessi davvero un accesso stabile. – Kzqai

+0

In realtà, questo non è molto difficile da generare. Basta iterare con $ _GET (per php) o Request.QueryString (per VBScript/VB.Net) e generare tutte le chiavi e i valori come input nascosti. –

1

È possibile utilizzare il metodo "POST" anziché il metodo "GET" per l'invio del modulo, se il metodo non è importante.

+0

Hmmm, annotato. In questo caso stavo cercando di usare get per la massima trasparenza (ogni modifica ottiene un cambio di URL corrispondente), ma forse questa disconnessione è perché sto abusando in qualche modo dei normali metodi di utilizzo di un modulo facendolo diventare un get-form ... – Kzqai

Problemi correlati