2010-07-16 49 views
0

通常HTML表單發送的查詢參數,像這樣的鍵值對:提交HTML表單與缺少參數名

http://blabla/?something=something&this=that 

但我需要的是與查詢的一個生成的URL的形式鍵省略:

http://blabla/?something&this=that 

據我所知,丟失或空name屬性並不完全提供我所期望的:

<input type="hidden" name="" value="myvalue"/> 

導致這個,有一個等號,我不想:

http://blabla/?=myvalue 

我知道這不是好的做法要做到這一點,但我需要與現有設計拙劣的系統接口。

回答

1

這些答案在邏輯上是合理的,但不幸的是,這個系統對於它會接受哪些字符以及任何虛假的等號會給它帶來麻煩非常挑剔。順便說一下,這是一個創新的接口庫OPAC。

我想出了一個辦法做到這一點,這是不提交表單的所有,但使用JavaScript文本框的內容注入到一個動態生成的URL,然後打開,使用了window.location:

<form name="search_form" method="get" action=""> 
    <input type="text" size="30" maxlength="100"/> 
    <input type="submit" value="Search" /> 
</form> 

<script type="text/javascript"> 
window.onload = function() { 
    document.search_form.onsubmit = function() { 
     var term = document.search_form.elements[0].value; 
     var url = "http://blabla/search/X?d:(electronic books) and (" 
      + term + ")&searchscope=1"; 
     window.location = url; 
    } 
} 
</script> 

我沒有做太多的JavaScript,這肯定會引起任何人注意無障礙和網絡標準合規性的警告。但是,請放心,它不會比其他任何作爲此係統一部分的javascriptaghetti糟糕。

2

如果你需要的屬性沒有價值,你不應該這樣做嗎?

<input type="hidden" name="something" value=""/> 

將產生的URL http://blabla/?something=&this=that你正在尋找的,只能用「=」之後的東西。或者,只是完全放棄它(即,不要定義輸入類型隱藏),你會得到的網址http://blabla/?this=that ...

0

也許我錯過了這一點,但要麼只是不提交該值或者在提交表單之前將其設置爲空。沒有名字的輸入是不好的做法,所以保留名字。

顯然,我們不知道接受表單輸入的腳本是如何設置的,但在我的經驗中,除非設置了某種瘋狂的服務器端驗證,否則它不應該吠叫你。