在asp.net页面上加载页面/指示器的jQuery

时间:2010-12-05 19:57:01

标签: jquery jquery-ui

我有两个asp.net页面,从Page1导航到Page2需要一些时间。 (Page2做数据访问的东西)。因此,我想在Page2完成加载时显示加载页面或指示符。

我有什么方法可以在jQuery中做到这一点吗?

感谢。

1 个答案:

答案 0 :(得分:0)

您可以做的一件事是调用执行数据访问的页面并将其放入内存(例如,使用Memcached)。

如果这不是一个非常漫长的过程(它不会超时),那么您可以使用getJSON拨打您的服务器。然后,此脚本可以访问您的数据库并将结果放入缓存中。完成处理后,它将输出一个JSON响应,其中包含调用它所需的任何内容(即用于将其存储在memcached中的密钥)。当响应返回时,重定向到页面(传递密钥),并从缓存中读取页面所需的数据。

不确定你的服务器代码是什么代码,所以我只举一个例子来说明我在ASP .NET MVC中所做的事情。

JavaScript(点击事件或其他内容):

$("#loadingIndicator").show();
$.getJSON('/DataAccess', function(data) {
  window.location.href = '/CacheReader/' + data.Key;
});

服务器:

// Returns the JSON with the key 
public ActionResult DataAccess() {
   var row = GetRow();
   var key = Guid.NewGuid();
   Cache.Store(key, row);
   return new Json(new { Key = key });
}

// Using the key, get the data from cache and output nicely.
public ActionResult CacheReader(string key) {
   var cachedRow = Cache.Read(key);
   return new View(cachedRow);
}

服务器代码可能有一些错误,但它有希望得到我的观点。代码将在页面上显示加载指示符,直到JSON响应(这意味着所有内容都在缓存中)。然后它将重定向到正确的页面。有一些东西导致指示器消失并在超时/错误时显示“糟糕”消息可能是个好主意。这样用户就不会永远等待。