这段代码该如何写?急!哪位帮我看看,谢谢!

kill_jp 2002-12-30 03:25:58
<%
dim address
address=request("address")
if address="" then%>
<!-- #include virtual="/include/map_index.asp" -->
<%else%>
<!-- #include virtual="/include/"+address+".asp" -->
<%end if%>


错误的地方应该是"+address+".asp"
但是我不知道怎样写正确,请大侠指教.不胜感激!
...全文
35 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
江南昆虫 2002-12-30
  • 打赏
  • 举报
回复
大家注意!!

include是在脚本执行以前载入的,也就是在include内引入变量是错误的,
再说<%= .... %>,其中的“=”,实际上就是“Response.Write”,
大家应该知道“Response.Write”是服务器向客户端输出,而不是服务器向自己输出,
其输出的内容直接提交给客户端,而不会再在服务器端执行!

ASP中不管有多少个“include”,服务器会全部载入并且和本页脚本完全整合后才开始运行脚本。

如果不信的话,可以做个小测试:
如果是先执行脚本,那么很显然将不载入024.asp,页面也就不会输出任何内容!
但是事实又是怎样呢?
运行一下吧!一试便知!!

023.asp
<% If Date = Now Then %>
<!--#include file="024.asp"-->
<% End If %>


024.asp
<%
Response.Write Date
Else
Response.Write Now
%>
konic 2002-12-30
  • 打赏
  • 举报
回复
tdl982324(石井坚)
好方法~!但是有点问题请问你!
content=f.ReadAll
这样直接用fso读写,去掉其中(“<%”“%>”)不就可以了吗?
用replace不也可以吗?
为什么还要新建正则表达式“set re=new RegExp”
还有模式设置我没看懂,re.pattern="^\s*=" 可以给我结实一下吗?
lbd8848 2002-12-30
  • 打赏
  • 举报
回复
to: tdl982324(石井坚)

theghost(鬼魅)
----
lbd8848(lbd)??
你这样写好像不可以吧?

------
我说是对的
Reker熊 2002-12-30
  • 打赏
  • 举报
回复
lbd8848(lbd)
不好意思,一场误会

楼主:这个可以用
事实上fso开放功能会更加安全,但是开放会带来安全隐患,不过如果设计比较好,一般不会有问题
theghost 2002-12-30
  • 打赏
  • 举报
回复
我想,在不多的情况下还是一个一个写比较好。
kill_jp 2002-12-30
  • 打赏
  • 举报
回复
to: tdl982324(石井坚)

你的办法应该是可以的,不过是否安全
kill_jp 2002-12-30
  • 打赏
  • 举报
回复
to: tdl982324(石井坚)

你的办法应该是可以的,不过是否安全
lbd8848 2002-12-30
  • 打赏
  • 举报
回复
theghost(鬼魅)
----
lbd8848(lbd)??
你这样写好像不可以吧?

------
我说是对的
Reker熊 2002-12-30
  • 打赏
  • 举报
回复
to lbd8848(lbd)

你怎么测试的???include是预编译的
lbd8848 2002-12-30
  • 打赏
  • 举报
回复
测试了一下,theghost(鬼魅) 是对的
Reker熊 2002-12-30
  • 打赏
  • 举报
回复
这样判断没有用,include是预编译的,不管有没有条件

给你个例子(需要有fso权限)

经常有这样的要求,根据不同的需求要求include不同的文件
如各个人的不同设置,所以要求能动态include文件。

代码如下:

Function include(filename)
Dim re,content,fso,f,aspStart,aspEnd

set fso=CreateObject("Scripting.FileSystemObject")
set f=fso.OpenTextFile(server.mappath(filename))
content=f.ReadAll
f.close
set f=nothing
set fso=nothing

set re=new RegExp
re.pattern="^\s*="
aspEnd=1
aspStart=inStr(aspEnd,content,"<%")+2
do while aspStart>aspEnd+1
Response.write Mid(content,aspEnd,aspStart-aspEnd-2)
aspEnd=inStr(aspStart,content,"%\>")+2
Execute(re.replace(Mid(content,aspStart,aspEnd-aspStart-2),"Response.Write "))
aspStart=inStr(aspEnd,content,"<%")+2
loop
Response.write Mid(content,aspEnd)
set re=nothing
End Function

使用范例:

include("youinc.asp")
annkie 2002-12-30
  • 打赏
  • 举报
回复
不可以这样做.
include文件包含在asp代码执行前已经编译了.
theghost 2002-12-30
  • 打赏
  • 举报
回复
lbd8848(lbd)??
你这样写好像不可以吧?
lbd8848 2002-12-30
  • 打赏
  • 举报
回复
<!-- #include virtual="/include/<%=address%>.asp" -->
fj47 2002-12-30
  • 打赏
  • 举报
回复
<%
dim address
address=request("address")
if address="" then%>
<!-- #include virtual="/include/map_index.asp" -->
<%else%>
<!-- #include virtual="/include/<%=address%>.asp" -->
<%end if%>
theghost 2002-12-30
  • 打赏
  • 举报
回复
<!-- #include virtual="/include/"+address+".asp" -->

不能这样调用的
你的address有很多吗?
<%if address="22" then%>
<!-- #include virtual="/include/22.asp" -->
<%elseif address="33" then%>
....


一个一个写吧
lbd8848 2002-12-30
  • 打赏
  • 举报
回复
这样试试
<%
dim address
address=request("address")
if address="" then%>
<!-- #include virtual="/include/map_index.asp" -->
<%else%>
<!-- #include virtual="/include/"<%=address%>".asp" -->
<%end if%>
kill_jp 2002-12-30
  • 打赏
  • 举报
回复
或者有什么好的建议能让我更好的调用文件,谢谢

28,391

社区成员

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

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