如果有人能告诉我这个名为“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。
答案 0 :(得分:3)
请注意 - 我并没有忽略JScript可以在浏览器中使用的事实,因为这个答案的优秀信息:What's the difference between JavaScript and JScript?。这个问题显然是在服务器的上下文中讨论JScript,所以从这里开始,术语是“JScript&#39;表示在ASP或Windows脚本中使用的JScript版本
两个 语言 可以相同/相似(尽管请注意JScript 不完全 JavaScript),但它们的运行时环境可能完全不同
您尝试使用这些库的JavaScript是一种客户端脚本语言,希望在浏览器中运行。然后,浏览器就是此代码的运行时环境,提供HTML规范中列出的对象和服务(例如,内部window
或document
对象。)
JScript是一种类似javascript的语言,在这种情况下,它希望在服务器上(或在Windows脚本环境中)运行 - 即在与浏览器完全不同的运行时环境中运行
在这种情况下,在服务器上包含客户端javascript库的想法是错误的,不能礼貌地说。你真正得到的最接近的是在Node.js这样的服务器平台上,它是纯粹的&#39; JavaScript的;但即便如此,它也不能运行像jQuery这样的客户端库,因为它们依赖于浏览器提供的运行时环境。是的,那可以是伪造的&#39;和&#39; stubbed&#39 ;;但不是为了任何真正的好处。
停止尝试这样做,并将其重写为普通的客户端代码。
答案 1 :(得分:0)
我使用JScript在现代的React(节点)项目,传统的经典ASP项目和老化的Web表单项目之间进行交互。经典ASP在服务器上使用JScript的能力非常有用。我能够集中经典ASP,Web表单和节点(反应)项目之间的所有设置(api,连接字符串,应用程序设置等)。一旦他们都读取相同的设置,我删除了他们各自的web.config设置
Babel有一个JScript transform,可让您将代码转换为JScript的额外级别(我编译了ES2016 - &gt; ES5 - &gt;经典ASP软件包的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很糟糕)。