1

タイトルにエラーが表示されます--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);

%>
4

3 に答える 3

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がオブジェクトではない」問題を修正しませんが、障害が発生したときのエラーメッセージを改善します。

于 2012-03-25T06:29:24.933 に答える
1

動作するはずです、ちょうど簡単なテストケースを作りました。

あなたの側で試すこと:

  1. 含まれているファイルの名前を次のように変更してみてくださいjson2.asp

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

    mimeタイプなどに問題がある可能性があります。

  2. 運が悪い場合は、ファイルの名前を変更したままにjson2.aspして、自分のページではなく、ブラウザで直接参照してみてください。

  3. 含まれているファイルにデバッグコードを追加して、実行されているかどうかを確認してください。

それでもうまくいかない場合は、使用している正確なサーバーとプラットフォームを指定してください。誰かが新鮮なアイデアを持っている可能性があります。

于 2012-03-25T09:51:31.610 に答える
-2

.NET Framework 3.5には、jsonオブジェクトの逆シリアル化に役立つJavaScriptSerializerクラスがあります。JSON.NETなどのサードパーティライブラリを使用することもできます。

于 2012-03-25T06:34:44.453 に答える