【发布时间】:2015-09-17 08:44:49
【问题描述】:
我们的 Web 应用程序现在可以在大多数浏览器上正常运行一年多。 最近我们发现它在 Safari 上运行不佳。
很多操作最终都会出现以下错误:Failed to load resource: Request timed out。有趣的是动作实际上是正确执行的之后(大部分时间)。
查看错误时,似乎是有 ajax 请求时发生的。
首先我尝试通过执行以下操作来更改 ajax 超时设置:
$.ajax({
"type" : methode,
"dataType" : "json",
"url" : url,
"async" : async,
"data" : donneesEnvoyees,
"timeout" : 60000
})
这并没有改变任何东西,错误实际上是在大约 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
})
如你所料,我仍然遇到同样的错误。
你知道发生了什么吗?为什么这个错误只发生在 Safari 而不是其他浏览器上?如何解决?
【问题讨论】:
-
js变量'methode'、'url'、'async'、'donneesEnvoyees'的值是多少?你在哪里调用ajax?任何涉及正则表达式的地方?
-
方法是 POST 或 GET。 url 是动作,async 在所有请求中大多是“false”,“donneesEnvoyees”是 post 参数。我在提交时调用 Ajax,没有涉及正则表达式。
-
你的ajax有
error()函数吗?如果可以,您可以将其包含在问题中吗? -
我想我遇到过这样的事情。能否给出服务器的预期返回值?
-
@AminJafari 我的 ajax 没有 'error()' 函数,但有 'fail()' 函数。如果服务器发回一些数据,错误会显示在带有响应的对话框中,但在我的情况下,服务器不会发回任何数据。
标签: jquery ajax web safari timeout