2010-09-23 37 views
1

我有以下形式如何提交表单散列或自

<form action="#!/search/" method="get" style="display:inline;" id="hdr_q">      
<table cellpadding="0" cellspacing="0"> 
<tr><td><input id="f_peoples" name="q" class="sb_box" size="40" autocomplete="off"> 
<input type="hidden" value="0" name="o"> 
<input type="hidden" value="all" name="st"> 
</td><td>&nbsp;</td><td width="20px" valign="middle"> 
<input type="submit" id="sfind" name="find" value="Search"></td></tr></table> 
</form> 

当我点击搜索按钮,它关系到 http://domain.com/?q=f&o=0&st=all&find=#!/search/ 而我希望它提交给http://domain.com/#!/search/?q=f&o=0&st=all&find= 哪有的ID

+0

你在动作中尝试过绝对网址吗? – Fanis 2010-09-23 05:56:33

+0

noop我还没有尝试过,但让我知道它究竟是什么.. – 2010-09-23 06:05:38

+0

绝对URI以协议开头(例如http://example.com/)。它不会帮助你,因为你想保留正常表单提交不能执行的片段标识符。 – Quentin 2010-09-23 06:48:43

回答

4

就形式而言,将数据“提交”到片段标识符是没有意义的 - 这是永远不会发送到服务器的。查询字符串始终位于片段标识符之前。

如果你想达到这个目标,你需要使用JavaScript构建URI,而不是使用标准表单提交技术。大多数通用JS库都带有例程以将serialise格式的数据转换为标准编码数据,这将为您带来大部分途径。

-1

设置action=""。一个空行为将表单发送给自己。

另外,你是否真的想发送提交按钮的值? 我可以建议,取出提交按钮name="find"

如果您想在末尾找到= &,请添加一个没有值的隐藏字段。

<form action="" method="get" style="display:inline;" id="hdr_q"> 
    <table cellpadding="0" cellspacing="0"> 
    <tr><td><input id="f_peoples" name="q" class="sb_box" size="40" autocomplete="off"> 
     <input type="hidden" value="0" name="o"> 
     <input type="hidden" value="all" name="st"> 
     </td><td>&nbsp;</td><td width="20px" valign="middle"> 
     <input type="hidden" id="find" name="find" value=""/> 
     <input type="submit" id="sfind" value="Search"></td> 
    </tr> 
    </table> 
</form> 
+0

,但我想#!/搜索/而如果我在http: //domain.com/directory它在这里提交 – 2010-09-23 06:06:32

+0

这个问题明确指出,目标是提交到“/#!/ search /?q = f&o = 0&st = all&find =”这个答案未能实现(因为“action =“”不保留片段标识符)。 – Quentin 2010-09-23 06:36:26