2010-09-23 36 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