在ajax请求之后,浏览器将等待多长时间?
在服务器响应请求之前,浏览器可以等待多长时间才能显示错误?这段时间是否可以不受限制?您能否进一步解释一下您想要实现的目标?您是否在服务器上有一个长时间运行的进程,您是否只想在本地计算机上更改设置,还是想为大量用户管理它 浏览器将等待多长时间取决于许多因素,例如超时发生的位置-是在TCP级别、服务器还是本地浏览器 如果您在服务器上有一个长时间运行的进程,并且您希望在之后更新网页,处理该进程的典型方法是异步运行长时间进程,并在完成时通知客户端,例如,使用ajax调用轮询服务器,或使用HTTP 1.1并向客户端提供通知流在ajax请求之后,浏览器将等待多长时间?,ajax,request,connection-timeout,Ajax,Request,Connection Timeout,在服务器响应请求之前,浏览器可以等待多长时间才能显示错误?这段时间是否可以不受限制?您能否进一步解释一下您想要实现的目标?您是否在服务器上有一个长时间运行的进程,您是否只想在本地计算机上更改设置,还是想为大量用户管理它 浏览器将等待多长时间取决于许多因素,例如超时发生的位置-是在TCP级别、服务器还是本地浏览器 如果您在服务器上有一个长时间运行的进程,并且您希望在之后更新网页,处理该进程的典型方法是异步运行长时间进程,并在完成时通知客户端,例如,使用ajax调用轮询服务器,或使用HTTP 1.1
在这两种情况下,仍然可以关闭连接,因此客户端仍需要重新打开连接。是和否。是服务器可以这样做,或者配置为这样做,否浏览器(我不知道版本/分发服务器的具体信息)可能已启用超时 不过,有两种解决方案可以通过HTTP实现/模拟这一点:
- 如果这是一个简单的长时间运行的脚本,并且您正在等待结果,那么这不是一个好办法,您应该按照前面的海报中提到的那样做,并使用异步处理和服务器轮询结果,这将是一个更可靠的fire解决方案。例如:来自图像处理器服务器端的缩略图脚本:用户上载图像,服务器立即返回200和“作业ID”。然后,客户端(javascript^^)可以使用JobID请求作业状态/结果
- 如果您的目标是在浏览器和服务器之间建立实时连接(单向连接,一旦浏览器发出请求,在不使用新请求(ajax^^^)的情况下就无法发送进一步的信息),则这称为长轮询/反向ajax,可用于通过http进行实时通信。有几种技术并行使用2个长轮询请求,这样一旦其中一个超时,第二个请求将变为活动请求,第一个请求将尝试重新连接
此外,comet(长HTTP请求)还有其他问题:浏览器对同时HTTP请求数量的限制、客户端事件的处理(必须立即发送到服务器)、服务器/网络故障检测和恢复,多用户处理等。如果使用jQuery$.ajax调用,则可以设置timeout属性以控制请求返回超时状态之前的时间量。超时是以毫秒为单位设置的,所以只需将其设置为一个非常高的值。您也可以将“unlimited”设置为0,但我认为您应该设置一个高值 注意:不受限制,但大多数浏览器都有默认超时,将被命中 当ajax调用由于超时而返回时,它将返回一个错误状态“timeout”,如果需要,您可以使用单独的案例来处理它 因此,如果您想设置3秒的超时,并处理超时,下面是一个示例:
$.ajax({
url: "/your_ajax_method/",
type: "GET",
dataType: "json",
timeout: 3000, //Set your timeout value in milliseconds or 0 for unlimited
success: function(response) { alert(response); },
error: function(jqXHR, textStatus, errorThrown) {
if(textStatus==="timeout") {
alert("Call has timed out"); //Handle the timeout
} else {
alert("Another error was returned"); //Handle other error type
}
}
});
不确定您正在使用什么,但可以延长超时时间。无限,我不知道。虽然我建议不要无限时间。如果需要,您可以随时将其设置为90秒或稍长一点。如果时间超过30秒,可能有更好更快的方法来做某事。+1-我对此也很好奇。我怀疑你需要担心客户会对你不忠。你无法控制这一切。谷歌搜索发现了这一点。它基本上是说服务器或浏览器都可能超时。因此,我会选择所有浏览器的默认值都不会超过的内容。调试时,我有一次在ajax调用后出去吃午饭,回到浏览器前,仍然在等待回复。我在调试器上单击go,浏览器接收到响应。但我认为这并不重要,因为我正在调试我认为他正在尝试反向ajax…可能重复“基于ajax的在线聊天室”:将
timeout
value设置为0
将ajax超时设置为无限期(读取无限)。@UmaShankar我正在处理与您相同的问题,你找到解决办法了吗。