跳到下一页时,json请求被取消

时间:2009-10-22 03:39:57

标签: jquery asp.net-mvc json

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

我正在为json调用使用jquery timer插件来频繁地检查用户信息(当用户在线时每15分钟一次)。

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

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

2 个答案:

答案 0 :(得分:1)

根据我看到的大量评论,我建议以下其中一项:

选项1

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

选项2

使用AJAX部分更新仅更新页面的主要内容。如果浏览器没有请求整个新页面,则母版页中的代码实际上永远不会刷新。这听起来就像你期望网站的行为一样,但实际发生这种情况需要做很多工作。

<强>解释

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

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

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

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

答案 1 :(得分:0)

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

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