asp-classic – 从JScript代码调用VB编写的函数(经典ASP)
|
目前我必须处理用VB编写的遗留系统.我对VB和ASP不太满意,所以我决定用JScript编写这个系统的新代码. 但是,这两种语言之间的互操作性存在一些问题:即,当我试图调用在< script language =“vbscript”>中声明的某些函数时.它失败并出现“预期的对象”错误(如果页面语言是VBScript),反之亦然. 即,以下代码: inc.asp <script language="vbscript" runat="server">
Sub VBTestFunction(Message)
Response.Write "VBTestFunction: " & Message
End Sub
</script>
<script language="javascript" runat="server">
function JSTestFunction(Message) {
Response.Write("JSTestFunction: " + Message);
}
</script>
testjs.asp <%@ Language="JavaScript" %>
<!-- #include file="inc.asp"-->
<script language="javascript" runat="server">
VBTestFunction("from javascript");
JSTestFunction("from javascript");
</script>
<script language="vbscript" runat="server">
Call VBTestFunction("from vbscript")
Call JSTestFunction("from vbscript")
</script>
失败,出现以下错误: VBTestFunction: from vbscript Microsoft VBScript runtime error '800a000d' Type mismatch: 'JSTestFunction' /test.asp,line 9 (如果我对特定行进行评论,其他三个语句将正常工作);将页面语言设置为VBScript <%@ Language="VBScript" %>
<!-- #include file="inc.asp"-->
<script language="javascript" runat="server">
VBTestFunction("from javascript");
JSTestFunction("from javascript");
</script>
<script language="vbscript" runat="server">
Call VBTestFunction("from vbscript")
Call JSTestFunction("from vbscript")
</script>
失败,出现以下错误: Microsoft JScript runtime error '800a138f' Object expected /test.asp,line 4 (再次,如果我将注释掉特定的行,其他三个语句将正常工作). 在同一个应用程序中混合VB和JS有一个MSDN article,但从文章看来,示例代码应该可以工作,因为TestFunction在另一个文件中声明并且毕竟是一个函数. 有没有办法使所有这些工作,并从VB和JS代码调用VBTestFunction和JSTestFunction?我想应该有一个,否则混合JS和VB就没有意义了. 解决方法我一直在监视这个问题,萨尔曼几乎已经回答了这个问题,但有些事情可以澄清.首先,正在引用的文章存在关键问题.它说执行的顺序是这样的: –
它错了,或者至少它已经过时了(它确实参考了IIS4). “内联脚本”(即默认语言中的脚本)的处理方式与同一语言的脚本元素的处理方式不同. 以下是如何推断正在发生的事情. >在解析开始之前,所有包含点都将被解析,并由包含文件中的内容替换,以创建单个词法“文件”.这是在进行任何解析之前创建的. 您应该注意,默认语言函数可以通过非默认语言的函数中的代码调用,条件是调用非默认函数可以追溯到默认语言的内联执行. 例如,如果默认语言是JScript,则可以使用VBScript函数(fnA)调用在JScript(fnB)中声明的函数,只要对fnA的调用是作为JScript内联执行的一部分进行的. IOW JScript可以调用VBScript,而VBScript又可以调用VBScript等,限制因素是这个链中顶部必须是JScript的引擎. 在您的示例代码中,您的VBScript全局(内联)级别的代码试图调用以默认JScript语言声明的函数.如果您按照上面的项目符号进行操作,您将看到在执行该项目时,所调用的函数不存在. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 如何使用身份成员资格与现有数据库(n层)
- asp.net-mvc-3 – DropDownListFor Unobtrusive Validation
- asp.net – System.Net.Mail新MailMessage随机发送重复的电
- asp.net – 敏捷,Scrum和CMMI TFS流程模板有什么区别?
- asp.net-mvc – ASP.NET MVC获取具有特定配置文件属性的用户
- asp.net-mvc-4 – 返回Web API中的自定义错误对象
- ASP.NET WebAPI中的模拟和异步
- asp.net-mvc – ASP.NET MVC默认路由?
- 手动升级后,将新的ASP.NET Web Optimization框架添加到MVC4
- asp.net-mvc-3 – 在ASP.NET MVC 3中覆盖/禁用授权
- 如何使用asp.net中的“发布/重定向/获
- Asp.net UserControl LoadControl问题
- asp.net-mvc – MVC数据注释范围验证无法正常工作
- asp.net – 为什么GET方法比POST快?
- asp.net-mvc – 如何在我的Asp.net Mvc中使用lin
- 发布ASP.NET vNext / DNX与CLR类库结合使用
- asp.net-mvc – asp.net mvc我可以有一个视图为多
- asp.net-mvc – ‘System.Web.Webpages.Html.Htm
- ASP.Net 5 RC2配置部分绑定
- asp.net-mvc – ASP.Net MVC 3:反向授权属性
