2010-07-16 81 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

也许我错过了这一点,但要么只是不提交该值或者在提交表单之前将其设置为空。没有名字的输入是不好的做法,所以保留名字。

显然,我们不知道接受表单输入的脚本是如何设置的,但在我的经验中,除非设置了某种疯狂的服务器端验证,否则它不应该吠叫你。