';JSON';为空或不是对象';经典ASP中的错误

';JSON';为空或不是对象';经典ASP中的错误,json,asp-classic,jscript,Json,Asp Classic,Jscript,我得到了标题中的错误——JSON为null或不是对象 我在一个经典的ASP页面内。我的json2.js文件与我所在的这个经典asp页面位于同一目录中。所以我不知道为什么服务器似乎无法识别JSON.parse()方法。 我的脚本语言是JScript 我注意到,在另一个线程中,使用json2.js库是一个不错的选择。但我似乎没法让它发挥作用。这是个怪癖吗?这应该很简单,不是吗 requestBody是一个简单的JSON对象:[{“answer”:“ok”},{“answer”:“sunny”}] 谢

我得到了标题中的错误——JSON为null或不是对象

我在一个经典的ASP页面内。我的json2.js文件与我所在的这个经典asp页面位于同一目录中。所以我不知道为什么服务器似乎无法识别JSON.parse()方法。 我的脚本语言是JScript

我注意到,在另一个线程中,使用json2.js库是一个不错的选择。但我似乎没法让它发挥作用。这是个怪癖吗?这应该很简单,不是吗

requestBody是一个简单的JSON对象:[{“answer”:“ok”},{“answer”:“sunny”}]

谢谢

    <script language="javascript" runat="server" src="json2.js"></script>

<%
    var jsonObject = JSON.parse(requestBody);

%>

不确定,但我要做的第一件事是检查json2.js上的权限。使用icacls.exe,并验证该文件上的权限是否与.ASP页本身上的perm匹配。我这样做:

%windir%\system32\icacls.exe json2.js /grant "NT AUTHORITY\IUSR:(RX)"
%windir%\system32\icacls.exe json2.js /grant "BUILTIN\IIS_IUSRS:(RX)"
另外-为了帮助调试ASP,您可以在IIS管理器中修改ASP调试设置。单击“向客户端发送错误”以在客户端浏览器窗口中查看错误

或者,您可以手动将其添加到web.config:

<configuration>
  <system.webServer>
    <httpErrors errorMode="Detailed" existingResponse="PassThrough" />
    <asp scriptErrorSentToBrowser="false" />
  </system.webServer>
</configuration>

这不会解决“JSON不是对象”的问题,但它会在出现故障时为您提供更好的错误消息。

在.NET Framework 3.5中,有一个类可以帮助反序列化JSON对象。您还可以使用第三方库,例如。

应该可以使用,刚刚制作的快速测试用例

您需要尝试的事情:

  • 尝试将包含的文件重命名为
    json2.asp
    ,并更改为:

    <script language="javascript" runat="server" src="json2.asp"></script>
    
    
    
    mime类型和类似的东西可能有问题

  • 如果运气不好,请将文件重命名,然后尝试使用浏览器直接浏览到
    json2.asp
    ,而不是浏览到您自己的页面

  • 尝试向包含的文件中添加一些调试代码,并查看是否正在执行


  • 如果仍然不走运,请说明您使用的确切服务器和平台,也许有人会有新想法。

    问题是关于经典ASP(ASP.NET之前)。非常感谢。你有一些非常深入的知识。
    <script language="javascript" runat="server" src="json2.asp"></script>