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中使用cookie mvc c#
- 有没有办法为ASP.Net Web应用程序安装程序创建补丁?
- asp.net-mvc – 无法使用IIS Express在Windows 10上运行Web
- asp.net – Web API和Upserts
- asp.net-mvc – 在HTML表单上的ASP.NET MVC中的PUT或DELETE
- asp.net – 为什么事件冒泡,为什么不直接订阅click事件?
- 垃圾收集 – ASP.NET核心Web应用程序(.NET Framework)中app
- asp.net-mvc – 是否有一个用于ASP.NET MVC的玉模板引擎?
- ASP.NET MVC4 Razor模板简易分页效果
- ASP.NET中的Accounting Style字符串格式
- asp.net – 对于未更改的静态内容,Amazon CloudF
- asp.net-web-api – 使用WebAPI和RavenDB进行基本
- asp.net-mvc – 如何本地化枚举并使用类似于Html
- asp-classic – 如何从ASP中的字符串中查找特定值
- 免费构建.NET服务器
- asp.net-mvc – 用于MVC的程序集中的资源的Bundl
- asp.net – aspnet_regiis不存在
- asp.net-mvc – MVC – 在同一页面上与多个实体进
- Asp.net WebApi HttpClient强类型PostAync
- asp.net-mvc – ASP.NET mvc 4控制器参数始终为空