'JSON'为空或不是对象'经典ASP中的错误
我在标题中看到错误--JSON为空或不是对象。'JSON'为空或不是对象'经典ASP中的错误
我在一个经典的ASP页面内。我的json2.js文件与我所在的这个经典的asp页面位于相同的目录中。所以我不知道为什么服务器似乎无法识别JSON.parse()方法。 我的脚本语言是JScript。
我注意到,在另一个线程中,使用json2.js库是一条路。但我似乎无法得到这个工作。这是一个怪癖吗?这应该是非常简单的,不是吗?
requestBody是一个简单的JSON对象:[{ “答案”: “OK”},{ “答案”: “阳光灿烂”}]
谢谢!
<script language="javascript" runat="server" src="json2.js"></script>
<%
var jsonObject = JSON.parse(requestBody);
%>
不确定,但我要做的第一件事是检查json2.js的权限。使用icacls.exe,并验证该文件的权限是否与.ASP页面上的权限匹配。我这样做:
%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>
在Vista/2008/Win7的,你可能还需要 “解锁” 在web.config节,允许这一点。
%windir%\system32\inetsrv\appcmd.exe unlock config -section:system.webServer/asp
这不会修复“JSON不是对象”的问题,但它会在发生故障时为您提供更好的错误消息。
.NET Framework 3.5的JavaScriptSerializer类可以帮助反序列化json对象。您也可以使用第三方库,如JSON.NET。
问题是关于经典ASP(preASP.NET)。 – 2012-03-25 22:11:00
应该工作,只是做了快速测试案例。
您可以尝试在你的身边:
-
尝试将包含的文件重命名为
json2.asp
并更改为:<script language="javascript" runat="server" src="json2.asp"></script>
有可能是与MIME类型和这样的东西的问题。
如果没有运气,请将文件重命名并尝试使用浏览器直接浏览到
json2.asp
,而不是浏览到您自己的网页。尝试向包含的文件添加一些调试代码,并查看它是否正在执行。
如果仍然没有运气,请同时指定您使用的确切服务器以及平台和可能有人会有新的想法。
非常感谢。你有一些认真深入的知识。 – user798719 2012-03-26 18:06:13