Javascript 处理ajax保存的HTTP超时
我有一个JavaScript应用程序,可以定期保存新的和更新的数据。然而,我需要它的工作缓慢的连接以及 数据在一个HTTP POST请求中提交。响应将为新创建的记录返回新插入的ID 我发现提交的数据已完全保存,但有时返回结果超时。因此,浏览器应用程序不知道数据已成功提交,将再次尝试保存 我知道我可以在浏览器中检测超时,但如何确保数据正确保存 处理这个案件有哪些好方法 我从这里看到,我可以包括一个未决状态:Javascript 处理ajax保存的HTTP超时,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个JavaScript应用程序,可以定期保存新的和更新的数据。然而,我需要它的工作缓慢的连接以及 数据在一个HTTP POST请求中提交。响应将为新创建的记录返回新插入的ID 我发现提交的数据已完全保存,但有时返回结果超时。因此,浏览器应用程序不知道数据已成功提交,将再次尝试保存 我知道我可以在浏览器中检测超时,但如何确保数据正确保存 处理这个案件有哪些好方法 我从这里看到,我可以包括一个未决状态: 从服务器获取事务号 发送数据,在服务器上保存为挂起 如果挂起的事务已经存在,请不要覆盖数
- 从服务器获取事务号
- 发送数据,在服务器上保存为挂起
- 如果挂起的事务已经存在,请不要覆盖数据,而是将相同的结果发送回
- 如果收到成功消息,则提交挂起的事务
- 如果返回错误,请稍后重试
- 如果超时,请稍后重试
但是,我正在寻找一个更简单的解决方案?您可以将多次重试计算为一个简单的全局整数。 您也可以自动重试,但这不适合自动保存应用程序。
第三种选择是使用。实际上,您似乎需要弄清客户机认为数据没有保存,但实际上确实保存了的原因。如果问题纯粹是时间问题,那么可能只需要延长客户端超时时间,这样它就不会过早放弃,或者需要减少响应中发送回的数据量,以便在慢速链接上更快地返回响应 但是,如果你不能通过这种方式解决问题,那么有很多可能围绕这个问题进行规划:
- 增加超时时间,不要将超时处理为成功
- 您可以使用
和ob\u flush
立即刷新每个记录的输出flush
- 因为你是在定期提出要求。在每个API调用上检查
方法,如果客户端已断开连接,您可以将响应保存在临时文件中,在下一个请求中,您可以使用新响应追加上一个响应,但此方法消耗的资源更多connection\u aborted