Классический жерех включает в себя
-
02-07-2019 - |
Вопрос
Я пытаюсь выделить некоторую логику 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
Когда я нажимаю кнопку «Отправить» в своей форме, я получаю приведенный ниже Subs DoStuff () ответ.
Ошибка выполнения Microsoft VBScript «800a000d»
Кто-нибудь знает, что я могу делать неправильно?
Любая помощь очень ценится
Спасибо Дэмиен Тип несоответствие:'сделать вещи'
/uat/damien/index.asp, строка 15
Решение
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
Внесите изменения в двух местах:
- В aspfunctions.asp напишите «sub doStuff» вместо
sub doStuff()
- Вызовите функцию как
doStuff
нетdoStuff()