0

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

页面结构如下所示:

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

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

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

谢谢。

4

3 回答 3

1

执行此操作的最简单方法是在引发标记的 onclick 事件时显示信息(使用 javascript)。当具有持久 sqls 的页面完全加载时,此信息会自动删除,因为新页面已加载并显示。

这只适用于 Response.buffer 为真但这是标准设置....

例子:

<a href="longLoading.asp" onclick="showLoading()">click me to load the Long loading asp page</a>
于 2013-06-11T06:23:09.537 回答
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>
于 2013-06-11T13:08:26.220 回答
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>

函数.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;}
于 2016-07-11T17:46:19.913 回答