4

どこにも言及が見つからないというエラーが発生しています。ASP.NETを使用してAJAX対応のWCFWebサービスを開発しています。ASP.NETマスターページの<asp:ScriptManager>に、json.orgから新しくコピーしたjson.jsファイルを含めました。ページを実行すると、json.jsのコードの最初の行(多くのコメントに続く)で失敗します(VS 2008はJavascript例外をキャッチします)。これは次のとおりです。

JSON = JSON || {};

エラーは、JSONが未定義であることを示しています。

Microsoft JScriptランタイムエラー:「JSON」は未定義です

まあ、当たり前!そのため、行は定義されているかどうかをテストし、定義されている場合は空のオブジェクトに設定します。未定義のはずですよね?最後に、未定義の変数に対してこのような操作を実行することはJavascriptのエラーではないと聞きました。

誰かが私にここで何が起こっているのかについての手がかりを与えることができますか?どういうわけかこの問題を引き起こしているのは、他の場所で何か問題が発生しているのではないかと思います。私はJavascriptとASP.NETのどちらについても深い経験がないので、セットアップでいくつかの一般的な落とし穴が欠けている可能性があります。

4

7 に答える 7

8

ページがIE8標準モードでレンダリングされていることを確認します。this.JSONドキュメントがQuirksまたはIE7モードでレンダリングされている場合、は未定義であることがわかりました。

ページに次のメタタグを含めることで、IE8をIE8標準モードでレンダリングするように強制できます。

<meta http-equiv="x-ua-compatible" content="IE=8" />
于 2011-04-27T22:30:07.237 に答える
7

json2.jsを使用する必要があります。問題のある行が変更されました:

// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.

if (!this.JSON) {
    this.JSON = {};
}
于 2009-11-26T06:20:13.660 に答える
1

前述のように、json2を使用する必要があります。

ただし、エラーはグローバル変数のMS処理に起因します。window.JSON =window.JSON||を試してください {}; それ以降、JSONは問題なく機能するはずです。

于 2009-11-26T06:23:06.133 に答える
1

var JSON = JSON || {}; IE8のJavascriptで同様の問題が発生した可能性があります。

于 2009-11-26T06:24:07.770 に答える
1

グーグルマップ「ストリートビュー」を使おうとすると同じ問題が発生しました。ストリートビューウィンドウが完全に黒くなり、ステータスバーにエラーを示すアイコンが表示されます。webdev007と同じようにDivXを無効にしたところ、問題は解決しました。Webdev、あなたは天才です!ありがとう!

于 2011-01-22T08:05:02.903 に答える
0

最近、JSONの未定義のJavaScriptエラーを受け取り始めましたが、問題はIEの最近のDivXアドオンが原因であることがわかりました。DivXアドオンは、すべてのhttps参照がありhttp参照がないWebページで安全なコンテンツの警告も引き起こしました(Web開発中に参照を修正するために[混合コンテンツの表示]を[プロンプト]に設定しました)。DivXアドオンを無効にした後、JSONの未定義のJavaScriptエラーが消え、誤ったセキュアコンテンツの警告がポップアップ表示されました。

于 2011-01-16T13:52:27.873 に答える
0

同じエラーが発生し、すでにjson2を使用していました。

私にとってvarは、式の前に追加すると機能します。

var JSON = JSON || {};
于 2010-08-17T18:31:45.557 に答える