Классический жерех включает
Я пытаюсь выделить логику 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
никогда не был определен.
Вы включаете другой файл в оператор if. Это не значит, что он динамически включен, это не так. Это всегда будет включено.
Чтобы увидеть это в действии, попробуйте этот пример:
<%
If 1=0 Then
'We never get here
%>
<!--#include file="aspFunctions.asp"-->
<%
dostuff()
End If
dostuff()
%>
Если я правильно помню, вам не нужны скобки для вызовов без возвращаемого значения (непроверенное решение):
doStuff
Внесите изменения в двух местах:
- В aspfunctions.asp напишите "sub doStuff" вместо
sub doStuff()
- Вызовите функцию как
doStuff
неdoStuff()