【发布时间】:2015-10-06 09:58:08
【问题描述】:
当我发出带有timeout: 参数的$.ajax 查询,并且满足我的timeout 从而调用error: 时,这是什么意思?
更具体地说: 这是否意味着服务器收到了请求,但仍在处理它?这可能意味着可能会发生一些影响,所以我可能不得不在服务器上取消它,或者以某种方式使已经部分写入数据库的数据无效。
或者这是否意味着我根本无法访问服务器?很高兴知道从那时起我不必处理服务器“保存”上的部分数据
或者这是否意味着请求已经完成,现在我们失去了它的踪迹?在这种情况下,我实际上必须询问服务器,“哦,嘿,关于我不久前发送的那个请求......你收到那个了吗?是吗?好吧,忽略最后一次保存”
像tracert 这样的操作系统命令清楚地表明,一个 TCP 命令可能要通过许多服务器,所以如果一个服务器没有响应,很难判断它是否得到它。但是有些协议需要回显才能被认为是可接收的(所以我不确定 HTTP 或 Apache 是否参与其中)
【问题讨论】:
-
首先应该不可能将部分数据写入数据库。如果您需要,例如在多个表上插入启动事务
-
是的,除非您通过多个 AJAX 请求写入数据(这当然是不可取的)。这很可能发生在批量文件上传或您可能在服务器端创建缩略图或由于文件数据太大而不得不单独发布文件数据的情况下
-
没有人应该这样做/这样做,因为允许数据处于这样的不一致状态是没有意义的。 “因为它太大了” Wut?多大?
-
取决于数据的大小。如果你的数据是 1.5GB,那么你真的是说你应该在一个请求中做到这一点吗?