在经典ASP页面中加载屏幕

时间:2013-06-10 18:05:20

标签: jquery asp-classic loading

我有一个传统的经典ASP页面需要很长时间才能加载。这是因为在加载之前它必须运行大量的数据库查询。加载时间超过10秒。

页面结构如下所示:

<% SQL Queries %>
<html>...Display the data from the queries..</html>

即,所有查询都在标记呈现之前发生。

由于加载时间较长,我想创建一个加载屏幕,该查询将在查询开始之前运行,并在查询结束时关闭,以向用户提供指示。我想知道怎么做?我见过的例子(比如BlockUI)依赖于通过ajax调用的页面,但是使用标准的'a href'来调用这个特定的页面。

感谢。

3 个答案:

答案 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;}