2010-07-19 66 views
5

有沒有辦法通過類型或動作url指定表單來不打開響應?換句話說,我想將信息發送到服務器,但不在客戶端上做任何事情。我知道我可以使用ajax並忽略響應,但是我希望儘可能避免將所有j添加到我的代碼中。有沒有辦法忽略表單回覆?

編輯:我不是故意限制自己的HTML表單。在我的情況下,服務器端解決方案也可以接受

回答

8

有後,服務器返回HTTP 204(無內容)表格提交。據the HTTP 1.1 spec

10.2.5 204無內容

服務器已完成要求 但並不需要返回 實體主體,並且可能要返回 更新的元信息。響應 可能包含新的或更新的 元信息,其形式爲 實體標題,如果存在 應該與 請求的變體相關聯。

如果客戶是用戶代理,它 不應改變從它的文件視圖 ,其引起 請求被髮送。這種反應主要是 旨在允許輸入用於操作至 發生而不引起的改變 用戶代理的活動文檔視圖, 雖然任何新的或更新 元信息應該在當前應用於 該文檔的用戶 劑的活性視圖。

204響應不得包含一個 消息體,因此總是 由頭字段後的第一個空行 終止。

這聽起來像是你想要的。

+0

完美,謝謝! – Adam 2010-07-19 17:00:01

0

使用ASP.NET,您可以有一個處理表單發佈的頁面,並且只需立即結束響應,這將使用戶處於同一頁面。

然而,在所有的用戶沒有反應是不是最好的用戶體驗.....

+0

用戶體驗實際上是問題的原因。目前一個文件被返回,但在這種情況下它是空的,我們不希望瀏覽器提示「打開/保存」。 – Adam 2010-07-19 16:53:56

4

試試這個:

<iframe id="invisible" ... 

<form target="invisible" ... 
+1

不確定爲什麼它是downvoted,這是一個好主意,易於實現,並跨瀏覽器。 – Kobi 2010-07-19 17:00:11

+0

這實際上回答了提出的問題。如果問題是「有沒有辦法忽略表單回覆」,答案不是要改變回復,而是要找到一種方法來忽略回覆。這種技術只是保存了我們的培根。 – Speck 2016-06-03 15:35:19

0

我發現應該指定name屬性(我在IE11中測試過)。例如:

<iframe id="invisible" name="invisible" style="display:none;"></iframe> 
<form method="post" target="invisible" action="url.com/whatever?x=y" id="fileForm" enctype="multipart/form-data"> 
相關問題