我有一个传统的经典ASP页面需要很长时间才能加载。这是因为在加载之前它必须运行大量的数据库查询。加载时间超过10秒。
页面结构如下所示:
<% SQL Queries %>
<html>...Display the data from the queries..</html>
即,所有查询都在标记呈现之前发生。
由于加载时间较长,我想创建一个加载屏幕,该查询将在查询开始之前运行,并在查询结束时关闭,以向用户提供指示。我想知道怎么做?我见过的例子(比如BlockUI)依赖于通过ajax调用的页面,但是使用标准的'a href'来调用这个特定的页面。
感谢。
答案 0 :(得分:1)
最简单的方法是在引发标记的onclick事件时显示信息(使用javascript)。当具有长持续时间sqls的页面完全加载时,此信息将自动删除,因为新页面已加载并显示。
仅当Response.buffer为true但这是标准设置时才有效....
示例:
<a href="longLoading.asp" onclick="showLoading()">click me to load the Long loading asp page</a>
答案 1 :(得分:1)
经典ASP附带了方便的Response.Flush命令。此类代码将导致内容在SQL查询开始执行之前出现:
<%
Response.Write("<div id=""PleaseWaitPanel"">")
Response.Write("Processing, please wait...")
Response.Write("<img src=""please_wait.gif"" />")
Response.Write("</div>")
Response.Flush()
'SQL Queries...
%>
现在要在查询完成后隐藏它,你需要简单的jQuery:
<script type="text/javascript">
$(document).ready(function() {
$("#PleaseWaitPanel").hide();
});
</script>
答案 2 :(得分:0)
我遇到了同样的问题,这对我有用:
default.asp(当它第一次运行时它没有返回任何记录,因为查询没有参数):
<% Dynamic SQL Query %>
<html>
<body>
Filter: <input type="text" id="filter">
<img src="images/search.png" onClick="search();"/>
<!-- when the search button is pressed the waiting.gif will appear -->
<img id="waiting" src="images/waiting.gif" hidden />
...table that shows the data from the query...
<script type="text/javascript" src="functions.js"></script>
</body>
</html>
functions.js:
function search() {
//this will hide the waiting.gif
document.getElementById("waiting").removeAttribute("hidden");
var_filter = document.getElementById("filter");
window.location.href = "default.asp?filter=" + var_filter.value;}