主题:  请教server.execute的问题

mlzboy

职务:普通成员
等级:2
金币:2.0
发贴:317
#12004/2/28 8:06:54
在1.asp中,我使用了
dim errmsg
errmsg=""
server.execute("2.asp")
response.write errmsg


在2.asp中内容如下
errmsg="不能为空"



请问一下,这样有没有错,但是我运行总是不成功,

是不是使用了server.execute方法的2.asp在执行完后,在2中的errmsg变量就消失了,不能在1.asp中使用



mlzboy

职务:普通成员
等级:2
金币:2.0
发贴:317
#22004/2/29 7:33:33
不要沉了,请高手指点



mlzboy

职务:普通成员
等级:2
金币:2.0
发贴:317
#32004/3/2 21:40:39
请指点,



bosco

职务:普通成员
等级:1
金币:0.0
发贴:31
#42004/3/3 11:07:04
嘿嘿!
你的好象是用C的编程逻辑!
ASP的还搞全局变量局部变量吗?
我不懂
顶顶 我也学学
哈哈



foxhust

职务:普通成员
等级:1
金币:0.0
发贴:4
#52004/3/3 11:27:23
不是很懂楼主的意思。
可以在2.asp中把errmsg传给1.asp就ok了撒



mlzboy

职务:普通成员
等级:2
金币:2.0
发贴:317
#62004/3/3 21:47:32
对是这个意思,但是我运行后,好像不会出现不能为空



xxj19820224

职务:普通成员
等级:1
金币:0.0
发贴:31
#72004/3/4 9:36:29
我找了好多asp方面的书看但没有提到server.execute方法!

请高手详细解释!



xxj19820224

职务:普通成员
等级:1
金币:0.0
发贴:31
#82004/3/4 9:40:06
但我觉得你在调用server.execute方法前,已经又定义他为空了!



damoo

职务:普通成员
等级:1
金币:1.0
发贴:28
#92004/3/5 9:46:02
一、关于重定向的两种方法:execute和transfer。
  在asp3.0和iis5.0中,要想重定向其他页面,或者在程序运行过程中想执行其他页面的一段代码,可以使用server对象的execute和transfer方法。execute是调用另外一个页面,执行完毕,又回到原来页面execute方法的下一行继续执行。transfer执行另外一个页面完毕,就不再回到原来的页面,相当于在原来页面的最后一行使用execute方法。
  
  二、关于原始页面的变量和环境。
  在使用这两个方法时,原页面的网页环境也传递给了目标页面,比如request、session等的属性。但是一般的变量无法传递。这就是楼主的代码为什么出错的原因。也就是说1.asp中的变量无法传递给2.asp,2.asp的变量也无法传递给1.asp。
  解决方案一:要想把变量传递过去,可以把变量设置成application变量,这样所有程序就能共享,执行完毕再清空application。
  解决方案二:不如把需要执行引用的页面做成过程或者函数,嵌入此页面,然后再调用此函数。
  解决方案三:当然用最基本的服务器端(ssi)包含啦!include一下不就行了。
  
  三、server对象的这两个方法,其实是解决服务器端“动态包含”的最佳解决方案,可以参看《asp设计》一书,也可以到页面http://www.oreilly.com/catalog/designasp/chapter/ch01.html看英文。
  
  不当之处,请指点!



mlzboy

职务:普通成员
等级:2
金币:2.0
发贴:317
#102004/3/5 15:34:20
我对第二个解决方案不理解,不知道能不能举个实际的例子啊



damoo

职务:普通成员
等级:1
金币:1.0
发贴:28
#112004/3/5 18:08:36
2.asp
sub asp2()
errmsg="不能为空"
end sub


1.asp
'嵌入2.asp里面的函数
sub asp2()
errmsg="不能为空"
end sub

dim errmsg
errmsg=""
asp2
response.write errmsg


不知道是不是多此一举?



mlzboy

职务:普通成员
等级:2
金币:2.0
发贴:317
#122004/3/9 12:05:08
你的意思是不是直接include 2.asp在1.asp里面啊