如何在服务器没有响应时处理ajax调用

Alo*_*lon 6 html javascript ajax jquery

我有一个ajax调用一些数据(使用jQuery).在用户点击"提交"(并且已发送ajax调用)之后,我显示"请等待..."消息,该消息在请求返回之前禁用所有内容(因此用户不会双击或单击其他内容并使其混乱事情).

当出现任何错误时它会很好 - "请稍候......"消失,我正在向用户显示出错的地方.

但是如果服务器由于通信错误而没有返回任何东西会发生什么?

我找到的解决方案是为"请稍候......"消息设置超时10秒,在此之后它消失并显示错误"通信失败".我假设如果服务器在10秒后没有响应,那么它根本不会响应 - 但这是错误的假设.

问题是 - 如何在20秒后确定服务器不会返回某些内容?可能发生的情况是用户点击提交 - > 10秒后他收到错误消息 - > 5秒后服务器响应并混淆用户

如何确保在隐藏"请稍候......"消息后,服务器中是否会弹出任何内容?

Par*_*rma 4

当您向服务器发送请求时。连接被打开并保持打开状态,除非服务器响应。
1.如果由于服务器端的某些错误而无法响应,则通常会发回 5xx 的响应代码 (503)
2.如果由于某些连接问题而导致连接提前终止,那么 jquery 也会将其视为错误。

1.因此,如果您想等待服务器发送请求或连接终止(以较早发生的为准),那么您可以completed使用jquery ajax.
2.如果您处于服务器即使在 20 秒后也没有响应的情况,并且您认为它现在应该已经响应,请使用超时。
3.最后,如果你的问题是你正在使用某种定制的(手工制作的http服务器),即使遇到一些错误也不会结束请求,那么至少对其进行足够的定制,以便它发送回一些响应代码(因为这个是请求和响应的HTTP模型)