Классический ASP с серверным Javascript, вызывающий функцию в другом файле - PullRequest
1 голос
/ 20 сентября 2011

У меня есть страница X, которая должна иметь гиперссылки на страницы A, B и C, если соблюдены определенные условия.Я надеюсь, что (на сервере во время создания страницы) - удаление гиперссылок, которые не соответствуют моим условиям.Я хотел бы, чтобы это было структурировано так, чтобы в функции Javascript, которая создает HTML для ссылок на X, вычислялась функция, существующая в A, B и C, где возвращается значение true / false, которое сообщает мне,не включать ссылку.

Я уже написал это так, что X динамически собирает вместе имена соответствующих функций для вызова в A, B и C, основываясь на их именах, и использует eval.Проблема в том, что eval, похоже, не знает, где расположены функции.

Так как это на стороне сервера, я не верю, что смогу использовать тег, потому что я думаю, что это для клиентского кода.Я не хочу использовать верхнюю часть, потому что я хочу, чтобы X был слабо связан с A, B и C.

Это Javascript на страницах ASP, работающих на IIS.

Любые предложения относительно того, как я могу заставить 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 ]

1 голос
/ 20 сентября 2011

Я могу ошибаться, но я не думаю, что вы можете использовать подключаемые файлы таким образом.Я никогда не видел, чтобы включаемые файлы динамически добавлялись таким образом.

Попробуйте

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;

}

Очевидно, вам нужно быть осторожным с путем к имени вашего файла.

Я использовал эту статью для вдохновения

1 голос
/ 20 сентября 2011

Я не совсем понимаю, что вы хотите сделать, но если вы называете функции, основанные на динамических данных, кажется, вы могли бы отступить и переписать функции для динамической работы через параметры и т. Д. Любая возможность вы можете опубликовать некоторыекод

...