我有一个ajax调用一些数据(使用jQuery).在用户点击“提交”(并且已发送ajax调用)之后,我显示“请等待…”消息,该消息在请求返回之前禁用所有内容(因此用户不会双击或单击其他内容并使其混乱事情).
当出现任何错误时它会很好 – “请稍候……”消失,我正在向用户显示出错的地方.
但是如果服务器由于通信错误而没有返回任何东西会发生什么?
我找到的解决方案是为“请稍候……”消息设置超时10秒,在此之后它消失并显示错误“通信失败”.我假设如果服务器在10秒后没有响应,那么它根本不会响应 – 但这是错误的假设.
问题是 – 如何在20秒后确定服务器不会返回某些内容?可能发生的情况是用户点击提交 – > 10秒后,他收到一条错误消息 – > 5秒后服务器响应并使用户感到困惑
如何确保在隐藏“请稍候……”消息后,服务器中是否会弹出任何内容?
解决方法
当您向服务器发送请求时.除非服务器响应,否则打开连接并保持打开状态.
1.如果由于服务器端的某些错误而无法响应,那么一般会发回5xx的响应代码(503)
2.如果由于某些连接问题,连接过早终止,那么 jquery也会将其视为错误. 1.如果你想等待服务器发送请求或连接终止(之前发生过),那么你可以使用jquery ajax中的完成选项. 2.如果您处于服务器即使在20秒后没有响应的情况,并且您认为它应该已经响应,请立即使用超时. 3.最终如果你的问题是你正在使用一些定制的(手工制作的http服务器),即使它遇到一些错误也会终止请求然后至少定制它enuf以便它发回一些响应代码(因为这是HTTP请求和响应模型)
1.如果由于服务器端的某些错误而无法响应,那么一般会发回5xx的响应代码(503)
2.如果由于某些连接问题,连接过早终止,那么 jquery也会将其视为错误. 1.如果你想等待服务器发送请求或连接终止(之前发生过),那么你可以使用jquery ajax中的完成选项. 2.如果您处于服务器即使在20秒后没有响应的情况,并且您认为它应该已经响应,请立即使用超时. 3.最终如果你的问题是你正在使用一些定制的(手工制作的http服务器),即使它遇到一些错误也会终止请求然后至少定制它enuf以便它发回一些响应代码(因为这是HTTP请求和响应模型)