有没有一种方法可以忽略表单响应?

9

有没有一种方法可以通过表单类型或操作URL来指定不打开响应的表单?换句话说,我想将信息发送到服务器,但在客户端上不执行任何操作。我知道我可以使用ajax并忽略响应,但如果可能的话,我想避免将所有js添加到我的代码中。

编辑:我并不是要限制自己只使用html表单。在我的情况下,服务器端解决方案也是可接受的。

4个回答

10
在表单提交后,让服务器返回HTTP 204(无内容)。根据 HTTP 1.1规范

10.2.5 204 No Content

服务器已满足请求,但不需要返回实体正文,并且可能希望返回更新的元信息。响应可以包含新的或更新的实体标头形式的元信息,如果存在,则应与请求的变体相关联。

如果客户端是用户代理,则不应从导致发送请求的那个文档视图更改其文档视图。该响应主要用于允许输入执行操作,而无需对用户代理的活动文档视图进行更改,尽管任何新的或更新的元信息应应用于当前在用户代理中的活动视图的文档。

204响应不能包括消息正文,因此总是在头字段之后的第一行空行终止。

听起来这正是您想要的。

7

试试这个:

<iframe id="invisible" ...

<form target="invisible" ...

1
不确定为什么它被踩了,这是一个好主意,易于实现,并且可以跨浏览器工作。 - Kobi
这实际上回答了所提出的问题。如果问题是“有没有一种方法可以忽略表单响应”,那么答案不是改变响应,而是找到一种方式来忽略响应。这种技术刚刚拯救了我们的局面。 - Speck

2

我发现还需要指定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">

从我在Windows上使用Firefox进行的测试来看,使用“name”是必要的,但不需要使用“id”;你知道什么情况下需要使用它们吗?也许这因浏览器而异,包含两者可能更安全。 - Nathan

0

使用ASP.NET,您可以拥有一个处理表单提交的页面,并立即结束响应,这将使用户停留在同一页。

然而,完全没有响应对用户来说并不是最好的用户体验.....


用户体验实际上是这个问题的原因。目前返回了一个文件,但在这种情况下它是空的,我们不希望浏览器提示“打开/保存”。 - Adam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接