2012-03-22 140 views
1

我在標題中看到錯誤--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); 

%> 

回答

3

不確定,但我要做的第一件事是檢查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不是對象」的問題,但它會在發生故障時爲您提供更好的錯誤消息。

+0

非常感謝。你有一些認真深入的知識。 – user798719 2012-03-26 18:06:13

-2

.NET Framework 3.5的JavaScriptSerializer類可以幫助反序列化json對象。您也可以使用第三方庫,如JSON.NET

+0

問題是關於經典ASP(preASP.NET)。 – 2012-03-25 22:11:00

1

應該工作,只是做了快速測試案例。

您可以嘗試在你的身邊:

  1. 嘗試將包含的文件重命名爲json2.asp並更改爲:

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

    有可能是與MIME類型和這樣的東西的問題。

  2. 如果沒有運氣,請將文件重命名並嘗試使用瀏覽器直接瀏覽到json2.asp,而不是瀏覽到您自己的網頁。

  3. 嘗試向包含的文件添加一些調試代碼,並查看它是否正在執行。

如果仍然沒有運氣,請同時指定您使用的確切服務器以及平臺和可能有人會有新的想法。