当页面长时间打开时,JQuery ajax 调用中断

Posted

技术标签:

【中文标题】当页面长时间打开时,JQuery ajax 调用中断【英文标题】:JQuery ajax call breaks when page sits open for a long time 【发布时间】:2013-01-04 21:51:09 【问题描述】:

首先,我是 javascript 和 JQuery 的新手,所以我希望这不是一个新手问题。

我正在进行的项目是一个 MVC3 应用程序。我正在按如下方式进行 AJAX 调用,一切正常。

$.ajax(
  url: 'blah',
  data: data1: '', data2: '',
  dataType: 'json',
  success: function(val)

  ,
  error: function(message)
    alert("Error!");
  

我的问题是,如果屏幕长时间处于打开状态,没有用户交互,我的 ajax 调用不会被触发,我会收到错误消息。我在控制器函数上的 C# 代码中设置了一个断点,该函数在长时间不活动后被调用并且永远不会被击中。

再次重申,它可以正常工作,但只有在长时间不活动(30 分钟以上)后才会中断。这是一个边缘情况,但仍然是一个问题。

谢谢!

【问题讨论】:

为了更新,抛出了alert("Error!"),所以我知道函数被调用了。 会不会是会话超时?您是否调试过应用程序并请求生命周期事件? 这很有可能..有没有好的javascript/jquery方法检查页面是否超时? @user959729 这里有很多答案link 您提供的链接非常完美。这就是我一直在寻找的。谢谢@ROYFinley 【参考方案1】:

如果您离开会话超过 30 分钟,您的会话很可能超时。你可以做两件事(我想还有很多事情要做!)

    您可以在 web.config 文件中修改会话超时:

注意:如果您在此配置中花费过多时间,并且访问次数过多,则您的 Web 服务器可能存在内存问题。

    您可以使用以下属性在您的控制器中装饰您的操作:

    [允许匿名]

注意: AllowAnonymousAttribute 适用于 MVC 4 或更高版本。如果你想在以前的版本中实现。最后,这可能会给您的应用程序带来安全问题。

希望对你有帮助!

【讨论】:

以上是关于当页面长时间打开时,JQuery ajax 调用中断的主要内容,如果未能解决你的问题,请参考以下文章

首次打开时,Jquery Mobile AJAX 弹出窗口出现在页面底部

当 jQuery Ajax 调用完成时控制请求

如何在页面离开时终止长轮询 Ajax 请求

jQuery中,Ajax发送后刷新局部页面的方法

同一页面上的两个 jQuery Ajax 调用,一个有效,另一个无效

jquery 多个ajax()请求。