【问题标题】:json request gets cancelled when skipping to next page跳转到下一页时,json请求被取消
【发布时间】:2009-10-22 03:39:57
【问题描述】:

我正在使用 json 获取用户信息列表,以在 asp.net (C#) 应用程序中使用 jquery 显示在页面顶部。

我正在使用 jquery timer 插件进行 json 调用,以频繁检查用户信息(用户在线时每 15 分钟检查一次)。

当 json 请求正在进行时,当我导航到下一页时,json 请求被取消/停止,这可以在 mozilla 中使用 firebug 清楚地看到。

如何保持 json 调用直到它得到响应?

【问题讨论】:

  • 如果您不再在该页面上,即使没有取消,您会如何处理 Ajax 调用的结果?
  • 您是否不小心提交了两次问题表? stackoverflow.com/questions/1604906/…
  • 无论用户当前的页面如何,我都需要将其显示在页面顶部。用户可以在任何页面,但我需要在用户停留页面的顶部显示信息
  • 我想是的,我已经删除了另一个帖子
  • 我不确定我是否理解。如果您要去一个新页面,该新页面是否也会请求该信息?如果是这样,为什么需要原始页面的响应?

标签: jquery asp.net-mvc json


【解决方案1】:

根据我见过的大量 cmets,我建议以下之一:

选项 1

  • 在母版页中,立即调用请求 json 调用中信息的函数。这意味着每当页面发生变化时,它都会请求新信息。
  • 保持 15 分钟的间隔,以防用户在同一页面上停留 15 分钟。

选项 2

使用 AJAX 部分更新仅更新页面的主要内容。如果浏览器不请求整个新页面,则母版页中的代码实际上永远不会被刷新。这听起来像是您期望网站的行为方式,但要真正实现这一点需要大量的返工。

说明

我认为这里的主要误解是当用户导航到新页面时会发生什么。

您之前可能听说过网络是无状态的。这意味着当您在一个网页上并导航到一个新页面时,您所在页面的全部内容都将被丢弃,并且服务器会为您提供一个全新的页面 - 从上到下。原始页面中的 html 均不保留。

使用母版页不会改变任何事情。母版页实际上只是用作服务器端的包装器,因此它知道在您发回的每个页面中都包含页眉和页脚。你仍然会发回一个全新的页面。

这对您的示例意味着取消 json 请求是浏览器唯一明智的做法。您已针对某些信息发出 AJAX 请求,并且在等待响应时,用户已导航到新页面。浏览器知道服务器将提供一个带有全新 html 的全新页面,因此它会丢弃当前页面。原本要更新的 div 已经不存在了。

【讨论】:

    【解决方案2】:

    为不再打开的页面保留 AJAX 请求是没有意义的,因为响应处理程序无处可显示结果。

    创建一个包含在每个页面上的标题。加载页面时,标题应显示当前值。打开新页面时启动新的 AJAX 请求。

    【讨论】:

    • 我将有一个
      来显示我的母版页中的内容(而不是在特定页面上)。
    • @Prasad - 从客户的角度来看,您不能将母版页视为单独的页面。母版页及其内容一键交付,就好像它是一个响应一样。导航生成和整个新页面 - 没有任何东西留在客户端。
    • 脚本中的所有变量都限定在浏览器中查看的特定页面(“全局”变量实际上是window 的属性)。确定两个页面是否相同的是URI,而不是生成页面的脚本。更改 URI(片段 ID 除外),您将获得一个新页面,无法访问所有旧变量。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签