«JSON» является нулевым или нет объекта «ошибка в классическом ASP - PullRequest
1 голос
/ 22 марта 2012

Я получаю сообщение об ошибке в заголовке - JSON является нулем или не является объектом.

Я нахожусь на классической странице 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);

%>

Ответы [ 3 ]

3 голосов
/ 25 марта 2012

Не уверен, но первое, что я хотел бы сделать, это проверить разрешения на 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 вы можете поиграть с настройками отладки ASP в IIS Manager. Нажмите «Отправить ошибки клиенту», чтобы увидеть ошибки в окне браузера клиента.

Кроме того, вы можете вручную добавить это в 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 не объект», но даст вам лучшие сообщения об ошибках при возникновении сбоев.

1 голос
/ 25 марта 2012

Должно сработать, только что сделал быстрый тестовый кейс.

Что стоит попробовать на вашей стороне:

  1. Попробуйте переименовать включенный файл в json2.asp и изменить на:

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

    Возможны проблемы с типом пантомимы и подобными вещами.

  2. Если не повезло, оставьте файл переименованным и попробуйте перейти прямо к json2.asp с помощью браузера, а не к своей странице.

  3. Попробуйте добавить код отладки во включенный файл и посмотрите, выполняется ли он.

Если вам все еще не повезло, укажите также, какой именно сервер вы используете и на какой платформе, и, возможно, у кого-нибудь появятся свежие идеи.

0 голосов
/ 25 марта 2012

.NET Framework 3.5 имеет класс JavaScriptSerializer , который может помочь в десериализации объекта json.Вы также можете использовать сторонние библиотеки, такие как JSON.NET .

...