1

如果有人能告诉我这个名为“test.asp”的文件中的这个相当简单的代码有什么问题吗?

<script src="jquery-1.2.6.js" type="text/javascript" language="javascript" runat="server"></script>
<script src="jquery.xml2json.js" type="text/javascript" language="javascript" runat="server"></script>

<%
var xml = '<xml><message>Hello world</message></xml>';
var json = $.xml2json(xml);
alert(json.message);
%>

我收到的错误消息是 Microsoft JScript 运行时错误

'$' 未定义

我尝试过 XMLObjectifier 和 xml2json.js,共同的主题是我似乎无法在我的经典 ASP 文件中执行这些 javascript 库。

我的理解是,编写 ASP 的 JScript 是 javascript……只是在服务器端。那么我可以在我的 test.asp 文件中运行/引用 .js 文件吗?

非常感谢你!如您所知,我的 asp 文件生成 xml,但我想将其转换为 json。

4

2 回答 2

3

请注意 - 我并没有忽视可以在浏览器中使用 JScript 的事实,根据这个答案的优秀信息:JavaScript 和 JScript 之间有什么区别?. 这个问题显然是在讨论服务器上下文中的 JScript,所以从这里开始,术语“JScript”是指在 ASP 或 Windows 脚本中使用的 JScript 版本

两种语言可以相同/相似(尽管请注意 JScript并不完全是JavaScript),但它们的运行时环境可以完全不同。

您尝试使用的这些库的 JavaScript 是一种期望在浏览器中运行的客户端脚本语言。浏览器就是此代码的运行时环境,提供 HTML 规范中规定的对象和服务(例如,内在windowdocument对象)。

JScript 是一种类似 javascript 的语言,在这种情况下,它期望在服务器(或 Windows 脚本环境)上运行 - 即在与浏览器完全不同的运行时环境中

那么,在这种情况下,在服务器上包含一个客户端 JavaScript 库的想法,礼貌地说是错误的。你能真正得到的最接近的是在像Node.js这样的服务器平台上,它是“纯”JavaScript;但即使这样也无法运行像 jQuery 这样的客户端库,因为它们依赖于浏览器提供的运行时环境。是的,这可能是“伪造的”和“存根的”;但不是为了任何真正的利益。

停止尝试这样做,并将其重写为普通的客户端代码。

于 2012-07-11T07:27:35.663 回答
0

我使用 JScript 在现代 React(节点)项目、传统经典 ASP 项目和老化的 Web 表单项目之间进行互操作。Classic ASP 在服务器上使用 JScript 的能力非常有用。我能够在 Classic ASP、Web 表单和节点(反应)项目之间集中所有设置(api、连接字符串、应用程序设置等)。一旦他们都阅读了相同的设置,我就删除了他们各自的 web.config 设置

Babel 有一个JScript 转换,可让您将代码转换为 JScript 的附加级别(我为 Classic ASP 捆绑包转换了 ES2016 -> ES5 -> JScript)。

include/config.js(babel 生成的设置)

var config = {
    "cdnBaseUrl": "https://api.example.com",
    "apis": { ... },
    ...
}

包含/Config.asp

' Import the global JSON object from crockford to parse JSON in VBScript server-side
<script language="JScript" runat="server" src="json2.js"></script>

' Import global config object that can be called from JScript and VBScript interchangeably
<script language="JScript" runat="server" src="config.js"></script>

<script language="JScript" runat="server">
  /** DEFINE GLOBAL FUNCTIONS THAT CAN INTEROP WITH VBSCRIPT HERE */

  function requireScript(path) {
      var resourceUrl = config.cdnBaseUrl + path
      return ('<sc' + 'ript src="' + resourceUrl + '"></sc' + 'ript>')
  }

  ....
</script>

包含/AppHead.asp

<!-- Include the settings and global helpers -->
<!--#include virtual="/include/Config.asp"-->

<!-- Build script tags in head that point to the correct CDN base url -->
<%=requireScript("/assets/react-client.js")%>

为所有设置编写适配器将是一种折磨(用 VBScript 解析 XML/JSON 很糟糕)。

于 2016-02-19T22:35:14.037 回答