Reply from <Server IP>: bytes=32 time=31ms TTL=122 Request timed out Reply from <Server IP>: bytes=32 time=28ms TTL=122
考虑到超时仅发生几毫秒,这会对我的AJAX请求产生什么影响?
这是我们在应用程序中遇到的问题的延续,如本SO question中所解释的那样,我想知道它们是否以某种方式相关.
我搜索过类似的问题,但找不到任何有用的东西.
编辑:除了对AJAX的影响外,它会影响动作方法的行为(服务器)吗?
解决方法
当AJAX请求超时时,将调用错误回调函数.此函数的第二个参数是一个描述错误类型的字符串,在这种情况下,它将具有值timeout.您可以通过处理此回调函数并通过在AJAX请求正文中指定超时值(如果未指定,对默认值起作用)来处理请求超时:
$.ajax({ ... timeout: 5000,//specify the timeout value in milliseconds error: function(jqXHR,textStatus,errorThrown) { if(textStatus==="timeout") { //code to execute when timeout occurs } } });
此外,您还可以通过检查第二个参数是否为字符串来检查请求是否在完整回调函数中超时(以类似于上面所示的方式),如果请求超时,它将具有超时值.
另外,请注意:
The timeout period starts at the point the $.ajax call is made; if several other requests are in progress and the browser has no connections available,it is possible for a request to time out before it can be sent.
Request timeouts are usually either left at their default or set as a global default using $.ajaxSetup() rather than being overridden for specific requests with the timeout option.
我建议你使用像fiddler这样的替代HTTP / s流量监控工具来找到第二个请求背后的谜团.