2

一部の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") end sub が表示されます

Microsoft VBScript ランタイム エラー '800a000d'

誰かが私が間違っている可能性があることを知っていますか?

どんな助けでも大歓迎です

ありがとう ダミアン タイプの不一致: 'doStuff'

/uat/damien/index.asp、15 行目

4

5 に答える 5

8

<% %> タグ内に asp 関数が必要です。

于 2008-09-23T12:22:15.910 に答える
5

if ステートメント内に他のファイルを含めています。これは、動的に含まれているという意味ではなく、そうではありません。必ず含まれます。

これを実際に確認するには、次のサンプルを試してください。

<%
If 1=0 Then
'We never get here
%>
    <!--#include file="aspFunctions.asp"-->
<%
    dostuff()
End If
dostuff()
%>
于 2008-09-23T13:04:50.050 に答える
5

aspfunctions.aspaspが「実行」されるように、タグ内にある必要があります。

aspfunctions.asp ファイル:

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

それ以外の場合、asp inaspfunctions.aspはプレーンテキストとしてのみ表示されるため、サーバーに関する限り、doStuff定義されたことはありません。

于 2008-09-23T12:24:41.240 に答える
1

私の記憶が正しければ、戻り値のない呼び出しには括弧は必要ありません (未テストの解決策):

doStuff
于 2008-09-23T12:21:18.890 に答える
-2

次の 2 か所を変更します。

  1. aspfunctions.asp では、代わりに「sub doStuff」と記述します。sub doStuff()
  2. doStuff関数をnotとして呼び出すdoStuff()
于 2012-08-27T09:10:08.583 に答える