Классический жерех включает

Я пытаюсь выделить логику asp на отдельную страницу. Сейчас я пытаюсь вызвать простую функцию.

Вот простая страница индекса, которую я использую

<html>
<head>
<title>Calling a webservice from classic ASP</title>
</head>
<body>
<%
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
 %>
  <!--#include file="aspFunctions.asp"-->
  <%
  doStuff()
End If
%>
<FORM method=POST name="form1" ID="Form1">
ID:
<INPUT type="text" name="corpId" ID="id" value="050893">
<BR><BR>
<INPUT type="submit" value="GO" name="submit1" ID="Submit1" >
</form>
</body>
</html>

Вот aspfunctions.asp

sub doStuff()
    Response.Write("In Do Stuff")
end sub

Когда я нажимаю кнопку "Отправить" в моей форме, я получаю следующий подпункт doStuff() Response.Write("In Do Stuff")

Ошибка выполнения Microsoft VBScript "800a000d"

У кого-нибудь есть идеи, что я могу делать неправильно?

Любая помощь с благодарностью

Спасибо Дэмиен Несоответствие Типа: 'doStuff'

/uat/damien/index.asp, строка 15

5 ответов

Решение

aspfunctions.asp должен быть внутри тегов, чтобы asp "выполнялся", например

aspfunctions.asp:
<%
    sub doStuff()
        Response.Write("In Do Stuff")
    end sub
%>

В противном случае жереха в aspfunctions.asp просто рассматривается как обычный текст, так что, если говорить о сервере, doStuff никогда не был определен.

Вы должны иметь функции asp внутри тега <%%>.

Вы включаете другой файл в оператор if. Это не значит, что он динамически включен, это не так. Это всегда будет включено.

Чтобы увидеть это в действии, попробуйте этот пример:

<%
If 1=0 Then
'We never get here
%>
    <!--#include file="aspFunctions.asp"-->
<%
    dostuff()
End If
dostuff()
%>

Если я правильно помню, вам не нужны скобки для вызовов без возвращаемого значения (непроверенное решение):

doStuff

Внесите изменения в двух местах:

  1. В aspfunctions.asp напишите "sub doStuff" вместо sub doStuff()
  2. Вызовите функцию как doStuff не doStuff()
Другие вопросы по тегам