asp中的延时效果怎么做???在线加分

jidechen 2005-07-26 03:55:27
我想实现这样的功能:

在一个asp页面中,先出现一段信息,等待几秒后继续自动执行下面的程序,请问怎么实现??谢谢啊
...全文
603 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jidechen 2005-07-27
  • 打赏
  • 举报
回复
to:蜗牛

你的方法也对,但是这样效率很低.因为我的这个页面中有超过30个的嵌套iframe,谢谢.再有好的方法吗?就像在foxpro中的wait命令一样,简单而快捷.
hyjz 2005-07-26
  • 打赏
  • 举报
回复
进来收藏一下那个推进技术,楼主的问题我感觉还是用 javascript解决好 不过你的iframe好象还有一种解决方法 纯HTML 的 refresh 可以实现在iframe 中的页面延时 方法 先 iframe 一个纯html页面 (这个页面应该不会占用你好多资源吧^_^)在纯HTML页面中使用refresh方法,延时 **秒 转向需要显示的页面,<meta http-equiv="refresh" content="延时秒数;url=跳转地址">


你看看这个方法适合你不?
jidechen 2005-07-26
  • 打赏
  • 举报
回复
贴个最简单不过的原码,希望位通过以下这个修改一下,谢谢::

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td>第一段新闻</td>
</tr>
</table>
<%'这里加入时间控制,当超过5秒后自动执行第二段新闻%>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td>第二段新闻</td>
</tr>
</table>
<%'这里加入时间控制,当超过5秒后自动执行第三段新闻%>
<table width="100%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td>第三段新闻</td>
</tr>
</table>
<% Response.Write("新闻显示完成!") %>
</body>
</html>
jidechen 2005-07-26
  • 打赏
  • 举报
回复
诸位,帮帮忙啊.
poonzsp 2005-07-26
  • 打赏
  • 举报
回复
gz
flashasp 2005-07-26
  • 打赏
  • 举报
回复
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>
<script language=javascript>
<!--
function sendData()
{
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.Open("get", "b.asp", false);
xmlhttp.Send();
maindata.innerHTML=bytes2BSTR(xmlhttp.responseBody);
window.setTimeout("sendData()",5000);
}
-->
</script>

<script language=vbscript>
<!--
Function bytes2BSTR(vIn)
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function
-->
</script>

<body>
<table width="667" border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td height="36" align="center" bgcolor="#0099CC"><font color="#FFFFFF">此页面将对数据库进行全面操作,生成首页所有js文件,可能需要一点时间,请稍候...</font></td>
</tr>
<tr>
<td align="center" bgcolor="#66CC00"><font color="#FFFF00"><strong><font color="#FF0000">↓</font></strong></font><font color="#000000">第一个嵌套页面</font>
<IFRAME ID="aaa" src="a.asp" frameborder="0" scrolling="yes" width="600" height="55"></iframe></td>
</tr>
<%
'我希望在这儿插入一段代码,目的是延时5秒种后自动执行下面的程序
%>
<tr>
<td align="center" bgcolor="#66CC00"><font color="#FF0000"><strong>↓</strong></font><font color="#000000">第二个嵌套页面</font>
<div id=maindata>test</div>
<script language=javascript>
<!--
sendData();
-->
</script>

</td>
</tr>
</table>
</body>
</html>
hanshufan 2005-07-26
  • 打赏
  • 举报
回复
<%
setTimeout("alert('对不起,请稍后!')",5000)
%>
直接用这个试试??
jidechen 2005-07-26
  • 打赏
  • 举报
回复
看来大家都没有明白我的意思,这样吧.我把源码贴过来,请大家帮我修改一下.注意里面的那个注释哟::

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>无标题文档</title>
</head>

<body>
<table width="667" border="0" cellpadding="0" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td height="36" align="center" bgcolor="#0099CC"><font color="#FFFFFF">此页面将对数据库进行全面操作,生成首页所有js文件,可能需要一点时间,请稍候...</font></td>
</tr>
<tr>
<td align="center" bgcolor="#66CC00"><font color="#FFFF00"><strong><font color="#FF0000">↓</font></strong></font><font color="#000000">第一个嵌套页面</font>
<IFRAME ID="aaa" src="a.asp" frameborder="0" scrolling="yes" width="600" height="55"></iframe></td>
</tr>
<%
'我希望在这儿插入一段代码,目的是延时5秒种后自动执行下面的程序
%>
<tr>
<td align="center" bgcolor="#66CC00"><font color="#FF0000"><strong>↓</strong></font><font color="#000000">第二个嵌套页面</font>
<IFRAME ID="bbb" src="b.asp" frameborder="0" scrolling="yes" width="600" height="55"></iframe></td>
</tr>
</table>
</body>
</html>
flashasp 2005-07-26
  • 打赏
  • 举报
回复
<%
'+++++++++++++++++++++++++++++++++do.asp
response.expires=0
%>
<table><tr><td><%=now()%></td></tr></table>
观察时间变化

'++++++++++++++++++++++++++++++++++test.asp
<script language=javascript>
<!--
function sendData()
{
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.Open("get", "do.asp", false);
xmlhttp.Send();
maindata.innerHTML=bytes2BSTR(xmlhttp.responseBody);
window.setTimeout("sendData()",5000);
}
-->
</script>

<script language=vbscript>
<!--
Function bytes2BSTR(vIn)
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function
-->
</script>

<body>
<div id=maindata>test</div>
<script language=javascript>
<!--
sendData();
-->
</script>
</body>
hanshufan 2005-07-26
  • 打赏
  • 举报
回复
<script type="text/javascript">
function writeText() {
window.open("http://www.lz.net.cn");
}
setTimeout("writeText()",5000);
</script>
这个是一个延时打开窗口的程序.
楼主看看,看能不能用上.
flashasp 2005-07-26
  • 打赏
  • 举报
回复

<script language=javascript>
<!--
function sendData()
{
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
xmlhttp.Open("get", "do.asp", false);
xmlhttp.Send();
maindata.innerHTML=bytes2BSTR(xmlhttp.responseBody);
window.setTimeout("sendData()",5000);
}
-->
</script>

<script language=vbscript>
<!--
Function bytes2BSTR(vIn)
strReturn = ""
For i = 1 To LenB(vIn)
ThisCharCode = AscB(MidB(vIn,i,1))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn,i+1,1))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
i = i + 1
End If
Next
bytes2BSTR = strReturn
End Function
-->
</script>

<body>
<div id=maindata>test</div>
<script language=javascript>
<!--
sendData();
-->
</script>
</body>

<%
response.expires=0
%>
<table><tr><td><%=now()%></td></tr></table>
观察时间变化
hanshufan 2005-07-26
  • 打赏
  • 举报
回复
关于推送技术
-----------------------------
转载请注明出处:一鹤.NET_WWW.1HE.NET

Client PULL(客户端拉技术)
通常,聊天室通过不断刷新来显示服务器的最新信息,即所谓的Client PULL(客户端拉技术)Client PULL必须不停的建立连接,刷新信息,断开连接,这样效率很低,而且速度很慢.(如果加快速度,频繁的建立断开连接刷新页面都会增加服务器与客户端的资源消耗)

Server Push(服务器推技术)
推技术就是建立一个连接以后,由服务器主动的把最新信息源源不断的推送到客户端
不需要不停的建立断开连接,不需要刷新页面,相比之下,推技术效率更好速度最快

但是很可惜,一直以来,ASP都不能实现erver Push技术

曾经看过微软网站提供的ASP推送技术方案,用死循环达到服务器的延时实现Server Push技术,这种代码只要一个客户端执行,CPU占用立即达到百分之百,最重要的是受到ASP线程限制,打开这个页面,其他的ASP页都必须排队等待这个页面执行完毕。

实现 asp 的服务器无刷新推技术
-----------------------------
转载请注明出处:一鹤.NET_WWW.1HE.NET

首先我用C++写了一个ASPpush.DLL,通过ASP代码的配合达到零负载的延时效果
下载ASPpush.DLL:http://www.1he.net/ASPpush/ASPpush.exe

使用ASP指令EnableSessionState=False突破ASP的线程限制
(这就是最关键的地方了,其实ASP本身是多线程的之所以你在ASP中只能得到单线程其原因是ASP对每一个会话产生一个线程,如果在ASP页面前用上EnableSessionState=False指令,就可以得到一个独立的线程与TCP连接用来源源不断的向客户端推送新的信息)

使用ASP的Response.IsClientConnected属性判断连接及时回收资源

使用以上方法,我制作了一个聊天室,
经过测试,一百人在线聊天,系统的全部CPU占用不超过百分之五(Windows 2003),
无论在内存占用还是CPU占用都没有超过使用客户端刷新的聊天室

实际上,使用客户端刷新的方法,仍然是一个对服务器持续的资源占用,而且必须频繁的建立连接断开连接,对于聊天室来说,客户端刷新的聊天室的资源占用是没有任何优势的,而且速度非常慢


准备工作
-----------------------------
转载请注明出处:一鹤.NET_WWW.1HE.NET

下载ASPpush.DLL:http://www.1he.net/ASPpush/ASPpush.exe

解压缩后首先请运行:Com.reg(这个文件会在右键菜单中添加注册COM组件的子菜单)

将ASPpush.dll 拷贝到系统目录
windows2000 $:/winnt/system32
windows2003 $:/windows/system32

右键点击system32/ASPpush.dll
点击右键菜单中出现的“注册DLL”
(当然你可以在命令行中注册:Regsvr32 $:/windows/system32/ASPpush.dll)

注意:$: 更换为系统盘


示例代码
-----------------------------
转载请注明出处:一鹤.NET_WWW.1HE.NET

下面是使用ASPpush.DLL实现服务器推送的示例代码:

<%@ Language="VBScript" codepage ="936" EnableSessionState=False %>
<%
Response.Buffer = True

set ASPpush = Server.CreateObject("ASPpush.page")
Do While Response.IsClientConnected
'================================
'在这里修改或自定义要执行的ASP代码
Response.Write "我晕...<br>"
'================================
Response.Flush
ASPpush.wait 100 '后面的数字以毫秒为单位(1000毫秒=1秒),指定推送的速度
Loop
set ASPpush=nothing
%>


本文主要介绍推技术在ASP中实现的原理,至于具体的实现可能还需要您自已发挥了
jidechen 2005-07-26
  • 打赏
  • 举报
回复
to 小帆:

错误:
Microsoft VBScript 运行时错误 错误 '800a01a8'

缺少对象: ''

/temp.asp,行6
hanshufan 2005-07-26
  • 打赏
  • 举报
回复
下面就是一段简单的推技术的演示代码:

<%Response.Buffer = false%>
<html>
<body>
<br>
<%Do While Response.IsClientConnected
NetBox.Sleep 1000
Response.Write now & "<br>"
Loop%>

jidechen 2005-07-26
  • 打赏
  • 举报
回复
我现在就是在一个页面中嵌套了N个页面,这样很消耗cpu资源,我的意思就是每执行完一个iframe嵌套就让他休息一会儿,等过一会儿后自动执行下面的iframe嵌套,直到嵌套完毕.
davs 2005-07-26
  • 打赏
  • 举报
回复
iframe嵌套来实现

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧