有没有一种方法可以在提交POST后取消POST而不使用AJAX


Is there a way to cancel a POST once it has been submitted without using AJAX?

这是一个JavaScript问题,但不是AJAX问题。有没有一种方法可以在帖子提交并运行后取消它?

  • 因此,用户点击发布按钮——一切都很好,表单已经提交——PHP已经准备好捕捉细节了
  • 无论出于何种原因,都存在网络拥塞,并且服务器没有响应
  • 我想让用户有机会在一段时间后再次发帖

有没有一种方法可以在实际POST发送后取消它?

有没有一种方法可以在服务器端真正检测到收到了帖子?(在这种情况下,数据将保存在数据库中)

我在想象整个后期程序在服务器端有一个开始和一个结束?

或者有没有办法确定这篇帖子不会有任何进展?它失败了,就这样结束了?

有没有一种方法可以在实际POST发送后取消它?

不,不是来自服务器。仅来自客户端。您可以选择不响应请求,但如果没有一些过于复杂的技巧(您真的不应该这样做),就不可能从服务器"中间"取消请求。

有没有一种方法可以在服务器端真正检测到帖子收到了吗?

您的代码只会在收到请求后运行;所以默认情况下,如果您的代码正在运行,则会收到请求。您可以使用PHP提供的任何日志记录机制来记录此事件;或者只是查看web服务器日志。

我在想象整个后期程序有一个开始和一个结束服务器端?

一切都从客户端开始,也从客户端结束。客户端请求资源。如果没有客户端,您的代码就会无所事事。一旦服务器从客户端接收到请求,它就会将请求URL映射到资源,然后需要向客户端发回响应。

所有的网络请求都以完全相同的方式发生。它们是从客户端开始的;并且当客户端接收到响应并且连接关闭时,它们都结束。然后,对于一个新的请求,整个周期再次开始。

有没有一种方法可以确定这个帖子不会去哪里。它失败了,就这样结束了?

如果没有调用您的代码;然后服务器端出现错误(可能是配置错误)。要记住的关键是,客户总是会得到回应;这取决于你去弄清楚发生了什么。

最好的方法是在应用程序中进行智能日志记录,或者通常监视服务器日志(跟踪请求的位置)。

如果一篇帖子"没有位置",相应的日志条目会告诉你。如果日志条目没有显示任何错误,并且您期望的操作(例如,创建了数据库记录)没有发生,那么这意味着问题出在您的代码上。

如果您需要确保只有在请求成功的情况下才创建记录,则在数据库支持的情况下使用事务。