中止POST XHR可靠吗?

时间:2016-05-17 19:03:57

标签: javascript php ajax

使用PHP 5.4运行Apache服务器。

我有一个表单向服务器发布xhr请求,如果在当前xhr结束之前再次按下该按钮,则中止先前的请求。

所以,如果我坐在那里,尽快点击按钮(在大约100-150毫秒内)并看到所有已取消的XHR堆积在我的网络标签中,然后让最后请求真正完成,我检查服务器,看到所有被取消的请求实际上“完成”了他们在服务器上的任务(连接到数据库并丢弃表中的一些数据)。

也可能是相关的:“工作”(插入数据库)之后发生的唯一事情就是将状态字符串发送回客户端。

我读到你不应该依赖取消HTTP请求来实际取消服务器进程,但这里有些腥味道。

取消XHR请求是否可靠,或者我的服务器正在发生什么?

2 个答案:

答案 0 :(得分:1)

XMLHttpRequest abort仅用于阻止阻止UI,但它不会取消服务器请求。

那么答案呢?这对服务器来说是不可靠的。

如果您计划一次阻止多个请求,您可以使用1)服务器端排队或2)在请求进行过程中简单禁用操作按钮(仅在请求完成时重新启用按钮)。我会说后者更简单。

答案 1 :(得分:0)

HTTP是无状态协议。当您从客户端中止(y)时,它只是让客户端不会收听响应,但POST已经被发送到服务器。当服务器收到请求时,它不会坐着,等待另一个请求;它只是执行与对给定资源的POST请求相关联的操作。