变形金刚烧饼修改器:include 连续包含问题(均为ASP文件)

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/11 03:05:41
有A B C D 四个文件,BCD在A的子目录下,C包含D,B包含C,显示正常。现在在A包含B时出现错误,即把D文件中的链接地址网页显示出为A目录下,而非BCD这个目录。请问乍么处理
C文件 <!--#include file="inc/D.asp"-->
B文件 <!--#include file="C.asp"-->
A文件 <!--#include file="wjj/B.asp"-->

A.asp文件在根目录下。根目录下有wjj这个子目录,B.asp与C.asp在wjj这个子目录下。而D.asp又在wjj目录的inc目录下。
现在执行A.asp文件时,包含B文件的这个区块的超链接是根目录下的文件,而非wjj这个目录的文件。

“有A B C D 四个文件,BCD在A的子目录下,C包含D,B包含C,显示正常。现在在A包含B时出现错误,即把D文件中的链接地址网页显示出为A目录下,而非BCD这个目录。请问乍么处理”
由你的问题可以看出。A处于4个文件共同的根目录下,B,C位于A所在文件夹的子目录,D位于孙目录,那你可以在A里面这样调用:<!--#include file="wjj/inc/D.asp"-->
或者A调用B:<!--#include file="wjj/B.asp"-->
B中调用C:<!--#include file="../wjj/c.asp"-->
c中调用d:<!--#include file="../wjj/inc/D.asp"-->
因为,include实际上类似于把被包含文件的代码复制到包含文件里执行。
但是,在实际应用中,我们应该避免后一种调用方式,因为这样只会是程序变得冗余,执行效率低

修改B中的文件中的链接地址为“/”打头的路径。

C文件 <!--#include file="inc/D.asp"-->
B文件 <!--#include file="C.asp"-->
A文件 <!--#include file="wjj/B.asp"-->
d文件<!--#include file="../wjj/B.asp"-->
楼主要加一个D文件关联才行。

错误一般出在代码里, 这样的包含实质上没有问题

不过如果在代码里用了 filesystemobject 并显用 server.mappath("子目录/文件名") 而非 server.mappath("/子目录/文件名") 的话, 很容易出现错误
server.mappath 是在包含代码执行完毕后再执行的, 也就是说, 所有子目录包含文件里的代码都整合到前一个目录下的文件里了, 然后操作的文件夹是在前一个目录里操作的,
你的情况很可能是B 或是C代码里执行了上边的操作

反正你要理解一点, 包含代码执行顺序在所有ASP代码之前

这也是为什么 <!-- #include file="<%这里不能用ASP代码的原因%>" -->

要在包含里操作文件, 你可以在根目录的主文件也加一个包含, 里边的内容是定义站点的文件夹位置, 后边的其它包含在执行 mappath 时用 server.mappath(临时变量 & "相对目录/文件名") 获取
网站在根目录下运行时 临时变量定义成 "/" 在其它目录下时就用 "/目录名/" 这样就不会出现问题了