无法加载资源:请求在Safari上超时

rea*_*404 15 safari ajax jquery timeout web

我们有一个Web应用程序在大多数浏览器上正常工作了一年多.最近我们发现它在Safari上效果不佳.

许多操作最终会出现以下错误:Failed to load resource: Request timed out.有趣的是,在此之后(大部分时间),动作实际上是正确执行的.

在查看错误时,似乎在存在ajax请求时发生.

首先,我尝试通过执行以下操作来更改ajax超时设置:

 $.ajax({
      "type"      : methode,
      "dataType"  : "json",
      "url"       : url,
      "async"     : async,
      "data"      : donneesEnvoyees,
      "timeout"   : 60000
 })
Run Code Online (Sandbox Code Playgroud)

这根本没有改变任何东西,错误实际上是在大约10秒后显示的,小于定义的超时.

在网上看了一下之后,我看到了一些关于指定no-cache的答案,以便safari不会将post参数保留在缓存中.我不能说我完全理解这一点,但我仍然尝试以下方式:

$.ajax({
     "type"      : methode,
     "headers"   : { "cache-control": "no-cache" }, <-- added this line
     "dataType"  : "json",
     "url"       : url,
     "async"     : async,
     "data"      : donneesEnvoyees,
     "timeout"   : 60000
 })
Run Code Online (Sandbox Code Playgroud)

你可以猜到,我仍然得到同样的错误.

你知道发生了什么吗?为什么这个错误只发生在Safari而不是其他浏览器上?怎么解决?

dou*_*f89 5

设置async: true你的AJAX设置。它将使浏览器保持连接,并在收到响应后立即关闭。

  • 根据我的经验和研究,Safari 仅使用 10 秒覆盖了他自己在 ajax 设置中提供的超时。 (2认同)