经典ASP与服务器端Javascript,在不同的文件中调用函数

时间:2011-09-19 21:21:35

标签: javascript asp-classic serverside-javascript server-side-includes server-side-scripting

我有一个页面X,如果满足某些条件,它应该具有指向页面A,B和C的超链接。我希望做的是(在服务器上,正在构建页面)修剪出不符合我条件的超链接。我想要这样构建的方式是,在为X上的链接构建HTML的Javascript函数中,eval存在于A,B和C中的函数,其中返回true / false,告诉我是否或不包括链接。

到目前为止我已经编写了它,以便X动态地将适当函数的名称拼凑在一起,根据它们的名称调用A,B和C并使用eval。问题是eval似乎不知道函数的位置。

由于这是服务器端,我不相信我可以使用标签,因为我认为这是客户端代码。我不想使用顶部,因为我希望X与A,B和C松散耦合。

这是在IIS上运行的ASP页面中的Javascript。

有关如何让eval在服务器上找到该功能的任何建议都表示赞赏。

MJ

[编辑]

function shouldLink(filename)
{
    filename = "a.asp";
    var splits = filename.split(".");
    var file = splits[0].toUpperCase() + "_ShouldLink()";  // A_ShouldLink() function name built here

    var exec = "<!--#include virtual=\"a.asp\" -->";
    exec += "eval( " + file + " );";

    try{
            return eval( exec );
    } catch( err ){

    }

    return true;
}

基本上在eval这里我想要调用名为A_ShouldLink()的函数(它位于a.asp中)。

2 个答案:

答案 0 :(得分:1)

我不太明白你想做什么,但是如果你根据动态数据命名函数,似乎你可以退后一步,重写函数以通过参数等动态工作。你有可能发布一些码?

答案 1 :(得分:1)

我可能错了,但我认为你不能以这种方式使用包含文件。我从未见过以这种方式动态添加的包含文件。

尝试

function shouldLink(filename)
{
    filename = "a.asp";
    var splits = filename.split(".");
    var file = splits[0].toUpperCase() + "_ShouldLink()";  // A_ShouldLink() function  name built here

   Server.Execute(fliename) 
   var exec =  "eval( " + file + " );";

   try{
          return eval( exec );
   } catch( err ){

   }

   return true;

}

显然,您需要注意文件名的路径。

我使用this article获取灵感

相关问题