想让服务器为浏览者导航,请高手进来看一看?????
我想实现这样一个功能.
1.页面index.asp
用户添加的数据.提交
2.页面save.asp 存储数据,用成aaaa.htm静态文件.
3.我想让他看一个临时页.
内容正在生成.aaaa.htm
4.当生成成功时,把用户导航到 aaaa.htm,错了时就导航到别的页面.("就这不明怎么写")
有点像CSDN发贴的过程那样就行,我看了看,CSDN是用Cookies做的.但不知道那个临时页面是怎么写还可以读服器状态.生成完成时就会到,用成之的页面了.
谢大家帮忙!!!!!!!万分感谢!!!!!!!!,如果可以请给个小例子!!!!!!
问题点数:100、回复次数:21Top
1 楼meizz(梅花雪)回复于 2005-05-17 13:17:04 得分 10
save.asp:
<html>
内容正在生成.aaaa.htm
</html>
<%
dim url
url = "aaaa.htm" ''这里做你的ASP后台处理
%>
<script language=JavaScript>
window.location.href = "<%= url %>";
</script>Top
2 楼leelong80(小龙)回复于 2005-05-17 14:39:08 得分 0
TO:meizz(梅花雪)
谢谢!梅大哥!你说的方案不行,ASP是一次把内容Resposne 到客户端的.
我做一个实验,他没显视"你好...",是一起发Resposne 出来的.
-----------------------------------------------------------------------
<html>
内容正在生成.aaaa.htm
</html>
<body>
你好!·#¥!·#¥!·#¥!·#¥!·#¥!·#¥!·#¥!·#¥
<%
dim url
for j=1 to 1000
for i=1 to 10000
'''''''''这里会化一定的时间
next
next
url = "aaaa.htm" ''这里做你的ASP后台处理
%>
<script language=JavaScript>
window.location.href = "<%= url %>";
</script>
</body>Top
3 楼leelong80(小龙)回复于 2005-05-17 14:42:06 得分 0
就像CSDN发贴时的样子,请大家帮忙.
--------------------------------------------
添加完成,正在生成静态页面,请稍候!!!
--------------------------------------------
之后他会到新页面去,不会他是指定了个时间来刷新吧.....
请大家帮忙.....Top
4 楼commonly(fanren)回复于 2005-05-17 16:15:00 得分 50
在save.asp中
<html>
<body>
<table><tr><td>内容正在生成.aaa.htm</td></tr></table>
<script>
var timerflag = 1;
function beforeLoad(){
if(document.readyState != "complete")
{
if(timerflag > 30)//30秒内,页面仍未处理完毕,报网络超时
{
timerflag = 1;
alert('连接网络超时!');
return;
}
timerflag++;
setTimeout("beforeLoad()",1000);
}
else
{
timerflag = 1;
afterLoad();
}
}
function afterLoad(){
window.location.href = "aaaa.htm";
}
</scirpt>
<%
dim url
url = "aaaa.htm" ''这里做你的ASP后台处理
%>
</body>
</html>Top
5 楼commonly(fanren)回复于 2005-05-17 16:21:11 得分 0
如果保存速度太快。有可能来不及看清楚页面。。你可以用以下这段,使页面最少显示10秒
在save.asp中
<html>
<body>
<table><tr><td>内容正在生成.aaa.htm</td></tr></table>
<script>
var timerflag = 1;
function beforeLoad(){
if(document.readyState != "complete")
{
if(timerflag > 30)//30秒内,页面仍未处理完毕,报网络超时
{
timerflag = 1;
alert('连接网络超时!');
return;
}
timerflag++;
setTimeout("beforeLoad()",1000);
}
else
{
if(timerflag < 10){//让这个页面最少显示10秒
timerflag++;
setTimeout("beforeLoad()",1000);
}else{
window.location.href = "aaaa.htm";
}
}
}
</scirpt>
<%
dim url
url = "aaaa.htm" ''这里做你的ASP后台处理
%>
</body>
</html>
Top
6 楼leelong80(小龙)回复于 2005-05-17 16:56:01 得分 0
TO:commonly(fanren)
这个方法是用定刷新来做了, 谢谢你,有没可以从服务反回一个状太来做这件事呢???
谢谢!!!Top
7 楼leelong80(小龙)回复于 2005-05-18 08:24:58 得分 0
自己顶一下.Top
8 楼commonly(fanren)回复于 2005-05-18 13:08:33 得分 0
那就换种做法:在index.asp页面用javascript的读取xml文件的做法,在save.asp中把返回信息用xml文件返回主页面
index.asp中:
<html>
<body>
<form id="form1" name="form1">
<input type=button onclick="save()" value="保存">
</form>
<table id="tb_handing" style="diplay:none"><tr><td>内容正在生成.aaa.htm</td></tr></table>
<script>
function getXml(url){
var source=new ActiveXObject("Microsoft.XMLDOM");
if(source==null){return;}
source.async=false;//异步下载
source.validateOnParse=true;
try{
source.load(url);
var RootElement=source.documentElement;
source = null;
return RootElement;
}
catch(e){
alert('网络不通畅导致下载数据失败,请检查网络状况!');
source = null;
return null;
}
}
function save(){
document.getElementById('tb_handing').style.display = "inline";
document.Form1.style.display = "none";
RootElement=getXml("save.asp?param=p")//请注意要把要传递的参数显示输入
if((RootElement.childNodes.item(0).text) == "1"){//保存成功
window.location.href = "aaaa.htm";
}
}
</script>
</body>
</html>
在save.asp中:
<% @LANGUAGE="vbscript" %>
<%
Response.ContentType = "text/xml";
Response.Charset = "gb2312";
%>
<%
dim ret=0
'做保存处理,成功后把ret=1
%>
<%=ret%>Top
9 楼leelong80(小龙)回复于 2005-05-18 14:43:40 得分 0
TO:commonly(fanren)
谢谢,我用一用看一看.谢谢.Top
10 楼leelong80(小龙)回复于 2005-05-19 10:11:10 得分 0
TO:commonly(fanren)
我用了,不过有一点问题我想问一下.save.asp 为知为什么打不开.
它是什么作用,
Response.ContentType = "text/xml";
Response.Charset = "gb2312";
我没有用过,还要打什么XML的组件吗?
谢谢.....昨晚看半天没找到什么原因!
Top
11 楼leelong80(小龙)回复于 2005-05-19 10:14:31 得分 0
TO:commonly(fanren)
HTTP 500 - 内部服务器错误 ,是内部500错误!
代码不过10行,没找原因,也没有错误提示.
请您帮忙!谢谢Top
12 楼tonl8(tonl8)回复于 2005-05-19 10:22:46 得分 40
这个其实很简单
save.asp:
<html>
内容正在生成.aaaa.htm
</html>
<%
dim url
url = "aaaa.htm" ''这里做你的ASP后台处理
%>
<script language=JavaScript>
window.location.href = "<%= url %>";
</script>
把上面的代码作两个文件处理:
save.asp的代码是:
<html>
<body>
正在生成AAA.htm静态文件,请等待...
<iframe src=save2.asp>
</iframe>
</body>
</html>
save2.asp
<%
dim url
url = "aaaa.htm" ''这里做你的ASP后台处理
%>
<script language=JavaScript>
window.location.href = "<%= url %>";
</script>
其中还有一个接受表单数据传送的问题,你自己处理一下
Top
13 楼leelong80(小龙)回复于 2005-05-19 10:29:24 得分 0
save.asp 没有问题了,我改了改
----------------
<%
Response.ContentType ="text/xml"
Response.Charset ="gb2312"
dim ret
ret=0
For i=1 to 1000
For j=1 to 10000
ret=1
Next
Next
Response.Write(ret)
%>
不过在index.asp点保存时,script Error!,之后错误就没有了,这样的错误不知道怎么找,请帮忙,没有人来呢.
Top
14 楼commonly(fanren)回复于 2005-05-19 10:35:29 得分 0
不好意思。。我有点小疏漏。。
save.asp中应该是这么写的(我程序里面使用的时候直接从数据库中出来的ret值是xml格式了。移植过来的时候忘了修改了。。。呵呵)
<% @LANGUAGE="vbscript" %>
<%
Response.ContentType = "text/xml";
Response.Charset = "gb2312";
%>
<%
dim ret=0
'做保存处理,成功后把ret=1
%>
<?xml version="1.0" encoding="utf-8" ?>
<ret>
<%=ret%>
</ret>Top
15 楼commonly(fanren)回复于 2005-05-19 10:40:05 得分 0
其实tonl8(tonl8) 那种做法也是可行的。。而且比较简单。 。。
不过有点小疏漏
save2.asp
<%
dim url
url = "aaaa.htm" ''这里做你的ASP后台处理
%>
<script language=JavaScript>
window.parent.location.href = "<%= url %>";//这里要这样才行啊。。。呵呵
</script>
Top
16 楼leelong80(小龙)回复于 2005-05-19 10:40:36 得分 0
TO:tonl8(tonl8)
谢谢你,你的方法也很好,不过这时你新打开的页面是 iframe 内的
save.asp的页面还是有"正在生成AAA.htm静态文件,请等待"显视着.
window.location.href 我想把这样方法换成 windows.open("aaaa.htm")
可这样的有时会被当广告弹出页吧....
Top
17 楼commonly(fanren)回复于 2005-05-19 10:50:22 得分 0
啊哦。。对不起。。我这几天脑袋有点进水。。。上面的说法是错误的。。
因为tonl8(tonl8)的那种写法。。。
你的那种在帧里面用window.location.href=""只在帧里面导航。。没启到整个页面导航的作用啊。。
用window.parent.location.href=""就又走回到楼主原来的老路上去了。。。
晕。。。。。。。。。。。。。。。。。。。。。。。。。。。
我没自己去实验。。。仅从理论上讨论。。。有不对的地方。。敬请指教。。。Top
18 楼leelong80(小龙)回复于 2005-05-19 11:08:59 得分 0
TO:commonly(fanren)
谢谢成功了!没有问题很好用的.不过index.asp的Save()中的DHTML有点问题,我把他去掉了.
万分感谢!!!!!!!!!!!!!!!!!!!!!!!
-------------------------------------------------------------------------------------
function save(){
//document.getElementById('tb_handing').style.display = "inline";
//document.Form1.style.display = "none";
RootElement=getXml("save.asp?param=p")//请注意要把要传递的参数显示输入
if((RootElement.childNodes.item(0).text) == "1"){//保存成功
window.location.href = "aaaa.htm";
}
---------------------------------------------------------------------------------------
我不太知道原理,你这样写是用"异步下载"它是定时的服务器控制的??
学习一下.Top
19 楼commonly(fanren)回复于 2005-05-19 12:00:21 得分 0
。。。应该是由客户端控制的。。。这中间涉及到xml组件和网络传输的事情。。。我也没有深入研究。。。不好意思。。。
这就是做应用的人的悲哀。。。什么东西都没办法深入。。。整天被项目追着跑。。。弄得自己觉得自己什么都没底。。。感觉什么都不会。。。Top
20 楼commonly(fanren)回复于 2005-05-19 12:01:48 得分 0
建议以后不要花太多心思在这些技巧上了。。。有空多学学操作系统。。。学点编译原理。。。Top
21 楼leelong80(小龙)回复于 2005-05-19 12:31:31 得分 0
TO:commonly(fanren)
是呀,天天就是作东西,也没有时间学呀,在中国只好如此,大家只学习别人定的软件规则,自己很少去想,过一段时间又出新东西了,又是表面去用,HI!,生活呀,无耐..........
谢谢....非常感谢.
Top




