سؤال

أحاول فصل بعض منطق 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 () أدناه.

خطأ وقت تشغيل 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

قم بإجراء التغييرات في مكانين:

  1. في aspfunctions.asp، اكتب "sub doStuff" بدلاً من ذلك sub doStuff()
  2. استدعاء الدالة باسم doStuff لا doStuff()
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top