-1

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

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

发送后有没有办法取消实际的 POST?

有没有办法在服务器端实际检测到是否收到了帖子?(在这种情况下,数据将保存在数据库中)

我在想象整个 post 过程在服务器端有一个开始和结束?

或者有没有办法确定帖子无处可去?它失败了,就这样结束了吗?

4

1 回答 1

3

发送后有没有办法取消实际的 POST?

不,不是来自服务器。仅来自客户端。您可以选择不响应请求,但如果没有一些您真的不应该做的过于复杂的杂技,则无法从服务器“在中间”取消它。

有没有办法在服务器端实际检测到是否收到了帖子?

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

我在想象整个 post 过程在服务器端有一个开始和结束?

一切从客户端开始,也以客户端结束。客户端请求资源。如果没有客户,那么您的代码就会闲置在闲逛。一旦服务器收到来自客户端的请求,它会将请求 URL 映射到资源,然后需要将响应返回给客户端。

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

有没有办法确定帖子不会去哪里。它失败了,就这样结束了吗?

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

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

如果帖子“无处可去”,相应的日志条目会告诉您。如果日志条目没有显示任何错误并且您预期的操作(例如,创建数据库记录)没有发生 - 这意味着问题出在您的代码上。

如果您需要确保仅在请求成功时才创建记录,那么如果您的数据库支持 事务,则使用事务。

于 2013-09-01T06:40:43.577 回答