题
是否有可能做出这样的 HTTP 响应,浏览器会忽略它并继续显示先前显示的页面?
我的意思是以下场景:
a) 用户点击某物
b) 一些 POST 发送到服务器(或 GET,但我们还是使用 POST,因为更有趣)
c) 服务器由于某种原因决定此时不想发送回复
d) 服务器发送专门设计的响应
e) 浏览器不显示错误页面,不显示空页面,不重定向到任何地方,不重新加载 - 只是继续显示它所显示的内容,就好像用户从未提交表单一样
PS 当然它可以用 AJAX 包装,但我问是否可以使用简单的非 JavaScript 解决方案
解决方案
尝试回HTTP204没有内容。看到描述的这种反应的代码中 RFC2616(超文本传送协议-HTTP/1.1) 在那里说:
如果客户是一个用户的代理,它不应该改变它的文件景, 这造成了请求应发送。这种反应是主要目的是允许 输入的行动将不会引起变化的用户代理的活 文件来看,虽然任何新的或更新的元信应该被应用到 文件目前正在用户代理的活动图。
其他提示
这是通常称为的方法 阿贾克斯. 。这个需要 JavaScript, ,以及 XMLHttp请求 功能。
编辑:注意到底部的“PS”。这 204响应 另一个答案中建议的看起来它可能是一个有效的非 Javascript 解决方案。
假设你做到这一点。
什么是用户怎么办?再次提交过程的形式,。
几次。
于是他们决定你的网站被打破,离开了。
我认为你需要Javascript功能来做到这一点,您可以发送该请求,并根据服务器响应的JavaScript可以做一回假,避免了实际页面的刷新/重载。
我不知道204的反应,但也许这样你可以从服务器端做到这一点。
做的另一种方式(也是JavaScript)的做一回假,右后请求发送,并根据服务器响应(使用Ajax),您可以修改实际的页面或用户发送到另一个页面。
没有。 HTTP协议包括一个请求 - 响应周期的。服务器不能决定不应答(它可以,但随后它打破的协议和commiting错误)。