我有一个ASP页面可以进行一些后端处理。它调用一个存储过程,如果进程完成,它将返回一个状态值。整个处理时间可以持续大约10-30秒,具体取决于输入数据的数量。
在这段时间里,我想显示加载图片或文本要比空白页面好得多。至少以这种方式,用户知道她的请求正在被处理,只需要等待它完成。
我不确定如何使用经典ASP实现这一点。有任何想法吗?
非常感谢。
编辑:
嗯,我想我之前没有解释清楚。这里的实际情况是:
我有2个asp页面, A.asp 和 B.asp 。用户单击A.asp上的按钮,它将向B.asp提交表单, B.asp 是将调用后端存储过程的处理页面。当B.asp完成处理后,它会将用户重定向到另一个页面。
所以我遇到的问题是,每当用户点击A.asp的按钮并进入B.asp时,只有一个空白页面,即使我已经有一个HTML代码(显示加载图像)放在最开头B.asp(连接数据库的asp代码如下)。我不知道为什么它在加载时不显示图像。
答案 0 :(得分:3)
我一直在使用的解决方案的一部分应该让你入门 -
<强> CSS 强>
#loading {
width: 100%;
height: 100%;
top: 0px;
left: 0px;
position: fixed;
display: block;
opacity: 0.7;
background-color: #000;
z-index: 99;
text-align: center;
}
<强> HTML 强>
<div id="loading">
<img id="loading-image" src="images/ajax-loader.gif" alt="Loading..." />
</div>
<强>的JavaScript 强>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script language="javascript" type="text/javascript">
$(window).load(function() {
$('#loading').hide();
});
</script>
在我的示例中,我使用了jQuery 1.4.4,但最新版本也可以使用。
答案 1 :(得分:2)
如前所述,我建议使用Ajax进行调查。然后,您可以更好地控制流量以及用户看到的内容。
但是 - 如果你真的想坚持使用经典ASP,一种方法是使用Response.Write调用呈现“加载页面”消息,并在加载整个页面之前调用Response.Flush进行输出。
答案 2 :(得分:1)
当您说显示加载消息时,我会解释您正在使用ajax。在ajax start中,您可以显示该图像,在ajax完全回调中,您可以隐藏加载图像。如果可能,请提供一些代码示例。
如果是jQuery ajax,你可以使用:
$('#loaderImage').show();
$.ajax({
// Other ajax parameters
success: function () {
// hiding the image here
$('#loaderImage').hide();
}
});
答案 3 :(得分:0)
我有类似的情景;我通过将工作分成两部分来处理它,并将所有耗时的工作放在每分钟触发的计划任务(只是一个WSC文件)中。我也可以创建一个服务,但这也很有用。
我的ASP文件创建了初始记录,有效地排队完成计划任务的工作并完成繁重工作。我的预定任务也是'自我意识';如果最后一个在下一个触发时仍然在运行,它就会自行终止并等待原件完成。这样就没有重复处理的可能性了。
结果是服务器上的负载下降到接近零,即使有数百个同时请求,并且最终用户得到即时反馈,告诉他们在处理订单时会收到电子邮件确认,带有“确认”ID(来自初始记录创建的身份),因此在出现任何问题时,每个人都有一个参考点。