Классический жерех включает - PullRequest
2 голосов
/ 23 сентября 2008

Я пытаюсь выделить логику 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

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

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

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

Любая помощь очень ценится

Спасибо Damien Несоответствие типов: 'doStuff'

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

Ответы [ 5 ]

8 голосов
/ 23 сентября 2008

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

5 голосов
/ 23 сентября 2008

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

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

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

4 голосов
/ 23 сентября 2008

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

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

<%
If 1=0 Then
'We never get here
%>
    <!--#include file="aspFunctions.asp"-->
<%
    dostuff()
End If
dostuff()
%>
1 голос
/ 23 сентября 2008

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

doStuff
0 голосов
/ 27 августа 2012

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

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