浏览器请求超时重发

子羽
  • 136

前端发送ajax请求,后台由于响应太慢,导致数据库被插入两条数据。
前端采用混合应用APP,使用zepto.js的$.ajax()方法发送请求,后台使用java开发,服务器使用Tomcat。
前端访问后台的接口,后台访问中间服务的接口,中间服务访问银行的服务接口(不要问我为什么这样做)
由于我们的服务和中间服务或者中间服务与银行服务之间连接不畅,导致前端发送的ajax请求等待一分钟后进入error的回调,提示用户连接服务器失败
但是后台数据库却出现两条缴费记录,间隔时间大多数是一分钟,也有一条是几十毫秒
求大神指教

回复
阅读 5k
3 个回答

1.避免表单重复提交,通过flag控制 或者设置disable
2.后台也可以做过滤
3.设置网络加载效果 这是点击页面无效

估计是 $.ajax 默认设置了超时时间,过了这个点返回超时异常。
而此时后台并不知道,依然在执行,可能10秒后,后台处理完了,插入数据库并且返回响应了,此刻前端早已取消了对响应的监听。

可能是后端的问题,我猜测是请求超时然后自动重试,但是回滚处理没做好

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏