关于include本论坛里已经有一些文章谈论过了,也有不少网友还在谈论这个问题,在这里想说一些自己在实践中曾经遇到过的问题和解决方式。
先从include的运行方式说起,顾名思义,include——包含,它只是一个包含的作用,并不进行编译(翻译)
第一种错误
举个例子
例1:
conn.asp
<%
dim conn
set conn=Server.CreateObject("adodb.connection")
conn.open "Provider=SqlOledb;DataBase=Cos;Uid=jielon;Pwd=123Z"
response.Write "ok"
%>
conn1.asp
<%
dim conn
set conn=Server.CreateObject("adodb.connection")
conn.open "Provider=SqlOledb;DataBase=Cos;Uid=jielon;Pwd=123Z"
dim rs
set rs=server.CreateObject("adodb.recordset")
rs.ActiveConnection=conn
rs.Source="select * from ttt"
rs.Open
do while not rs.EOF
response.Write rs(1)
rs.MoveNext
loop
rs.Close
%> <!--#include file="conn.asp"-->
运行conn1.asp时会提示:
Microsoft VBScript 编译器错误 错误 '800a0411'
名称重定义
/conn.asp,行2
dim conn
----^
出错原因:
执行conn1.asp的步骤是:
1.包含:<%
dim conn
set conn=Server.CreateObject("adodb.connection")
conn.open "Provider=SqlOledb;DataBase=Cos;Uid=jielon;Pwd=123Z"
dim rs
set rs=server.CreateObject("adodb.recordset")
rs.ActiveConnection=conn
rs.Source="select * from ttt"
rs.Open
do while not rs.EOF
response.Write rs(1)
rs.MoveNext
loop
rs.Close
%>
<%
dim conn
set conn=Server.CreateObject("adodb.connection")
conn.open "Provider=SqlOledb;DataBase=Cos;Uid=jielon;Pwd=123Z"
response.Write "ok"
%>
2.编译(翻译)开始
所以有重命名的错误
第二种错误:
a include b,b include a
出现错误提示:
Active Server Pages 错误 'ASP 0135'
循环包括
/conn.asp,行7
文件 'conn1.asp' 包括它本身 (可能非直接地) 。请检查包含文件中的其他 Include 语句。
第三种错误:
<!--#include file=<%=a.asp%>à
或者
<%……
t="a.asp"
……%>
<!--#include file=<%=t%>à
这里它找的是<%=a.asp%>
以上这些,感觉用asp事务处理很方便:
<%@ transaction=required%> ‘-----必须放在第一行
….your code ……
<% server.execute(transfer) “a.asp”%> ‘----可以包含的页面或者使用的页面
顾名思义,它的作用是直接运行
对于第一个错误,他没有问题
第二个错误,只要他不运行有<%@ transaction=required%>的页面,也不会出现错误提示,但结果是循环的格式
对于第三个错误,<%server.execute t%>也没有问题
所以利用asp事务处理解决值一类问题感觉还是比较好的
对于初学的人来说,也许可能这样想:
response.redirect “a.asp”
response.redirect “b.asp”
想利用两个页面进行某个处理,但是这样已经把叶面控制权转移
这也可以利用asp事务进行处理
唯一的缺憾是——我看了一些资料,但是对于<%server.execute “a.asp?kk=df”%>这样的处理,还没有解决,我运行时产生:
服务器对象 错误 'ASP 0231 : 80004005'
Server.Execute 错误
/conn2.asp,行19
无效的 URL 表单或是合格的 URL 已被使用。使用相关的 URLs。
但有些书中好像有这种用法,不知什么原因,希望得以指教