我试图在服务器端使用javascript代码将JSON输入解析为对象。由于在经典asp中没有对JSON反序列化的原生支持,我尝试使用Douglas Crockford的javascript库https://github.com/douglascrockford/JSON-js/blob/master/json2.js作为服务器端代码。
我在IIS Express上使用此解决方案没有问题,但是当我在常规IIS上移动代码时,我遇到了这个错误:
Microsoft JScript compilation error '800a03ea'
Syntax error
这一行是罪魁祸首j = eval('(' + text + ')');
。
所以我开始用类似的东西来欺骗它:
text = '(' + text + ')';
j = eval(text);
但与eval一致的行总是会导致错误。在没有成功之后,我试图简化代码以消除任何可能的干扰,并且来到这个仍然会导致错误的简单代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>test</title>
<script type="text/jscript" language="jscript" runat="server">
function Test(text) {
eval('(' + text + ')');
}
</script>
</head>
<body>
<p><% Test("Test") %></p>
</body>
</html>
我的问题是,是否有人知道是什么原因导致常规IIS不喜欢使用eval?
答案 0 :(得分:0)
不知道text
的值,但您尝试评估的最终字符串格式不正确。也许是因为您添加的括号。
无论如何,要使您的测试工作首先将功能更改为:
function Test(text) {
return eval(text);
}
然后传递给可以评估的东西:
<p><%= Test("1+1") %></p>
对我来说很好。