クラシック ASP インクルード
-
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
フォームの送信ボタンを押すと、以下のsub dostuff()respons.write( "in do stuff")end subを取得します
Microsoft VBScript ランタイム エラー '800a000d'
私が何を間違っているのかわかる人はいますか?
助けていただければ幸いです
ありがとうダミアンタイプの不一致:'doStuff'
/uat/damien/index.asp、15行目
解決
aspfunctions.asp
ASP が「実行」されるようにタグ内に置く必要があります。例:
aspfunctions.asp:
<%
sub doStuff()
Response.Write("In Do Stuff")
end sub
%>
それ以外の場合は、ASP aspfunctions.asp
サーバーに関する限り、単にプレーンテキストとして認識されるため、 doStuff
定義されたことはありません。
他のヒント
<% %> タグ内に asp 関数を含める必要があります。
if ステートメント内に他のファイルを含めています。これは、動的に組み込まれるという意味ではなく、そうではありません。必ず含まれます。
実際の動作を確認するには、このサンプルを試してください。
<%
If 1=0 Then
'We never get here
%>
<!--#include file="aspFunctions.asp"-->
<%
dostuff()
End If
dostuff()
%>
私の記憶が正しければ、戻り値のない呼び出しには括弧は必要ありません(未テストの解決策)。
doStuff
次の 2 か所で変更を加えます。
- aspfunctions.asp では、代わりに「sub doStuff」と書きます。
sub doStuff()
- 関数を次のように呼び出します
doStuff
ないdoStuff()
所属していません StackOverflow