2010-12-05 72 views
0

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

有没有什么办法可以在jQuery中做到这一点?

谢谢。

+0

它可能会非常棘手,因为它是服务器端负载,它不是ajax调用权限... – kobe 2010-12-05 20:04:09

回答

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响应(这意味着所有内容都在缓存中)。然后它会重定向到正确的页面。让指示器消失并在超时/错误时显示“Oops”消息的做法可能是一个好主意。就这样用户不会永远等待。