我有两个asp.net页面,从Page1导航到Page2需要一些时间。 (Page2做数据访问的东西)。因此,我想在Page2完成加载时显示加载页面或指示符。
我有什么方法可以在jQuery中做到这一点吗?
感谢。
答案 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响应(这意味着所有内容都在缓存中)。然后它将重定向到正确的页面。有一些东西导致指示器消失并在超时/错误时显示“糟糕”消息可能是个好主意。这样用户就不会永远等待。