source

'JSON'은 IE에서만 정의되지 않은 오류입니다.

bestscript 2023. 3. 21. 22:16

'JSON'은 IE에서만 정의되지 않은 오류입니다.

WCF 서비스에 AJAX 콜을 발신하고 있는데 데이터를 전달할 때 JSON.stringify()를 사용합니다.

콜이 반환되어 FF, Chrome에서는 정상적으로 동작하지만 IE8에서는 동작하지 않는다.'JSON'이 정의되지 않았습니다.라는 오류가 표시된다.

제안사항

p.s. IE7에서도 작동했으면 합니다.

브라우저 간에 일관된 구현을 위해 json2를 사용합니다.

https://github.com/douglascrockford/JSON-js

IE9에 문제가 있었습니다.IE9에서 페이지를 "quirks" 모드로 렌더링하고 있었습니다.솔루션:<!DOCTYPE html>이것으로, 「quirks」모드에서 해방되어, 이 문제 뿐만이 아닙니다.

갱신하다

JSON3 라이브러리를 확인합니다.그것은 마법처럼 작용한다.

JSON2로부터의 변경

이게 도움이 됐으면 좋겠어요.


이게 도움이 됐으면 좋겠다.오래전에 몇몇 온라인 소식통으로부터 이걸 얻었어요.그들의 연결고리가 없어
참고 자료를 인용할 수 없어서 죄송합니다.

var JSON = JSON || {};
// implement JSON.stringify serialization
JSON.stringify = JSON.stringify || function(obj) {
    var t = typeof (obj);
    if (t != "object" || obj === null) {
        // simple data type
        if (t == "string")
            obj = '"' + obj + '"';
        return String(obj);
    } else {
        // recurse array or object
        var n, v, json = [], arr = (obj && obj.constructor == Array);
        for (n in obj) {
            v = obj[n];
            t = typeof (v);
            if (t == "string")
                v = '"' + v + '"';
            else if (t == "object" && v !== null)
                v = JSON.stringify(v);
            json.push((arr ? "" : '"' + n + '":') + String(v));
        }
        return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
    }
};
// implement JSON.parse de-serialization
JSON.parse = JSON.parse || function() {
    var r = "(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)", k = '(?:[^\\0-\\x08\\x0a-\\x1f"\\\\]|\\\\(?:["/\\\\bfnrt]|u[0-9A-Fa-f]{4}))';
    k = '(?:"' + k + '*")';
    var s = new RegExp(
            "(?:false|true|null|[\\{\\}\\[\\]]|" + r + "|" + k + ")", "g"), t = new RegExp(
            "\\\\(?:([^u])|u(.{4}))", "g"), u = {
        '"' : '"',
        "/" : "/",
        "\\" : "\\",
        b : "\u0008",
        f : "\u000c",
        n : "\n",
        r : "\r",
        t : "\t"
    };
    function v(h, j, e) {
        return j ? u[j] : String.fromCharCode(parseInt(e, 16));
    }
    var w = new String(""), x = Object.hasOwnProperty;
    return function(h, j) {
        h = h.match(s);
        var e, c = h[0], l = false;
        if ("{" === c)
            e = {};
        else if ("[" === c)
            e = [];
        else {
            e = [];
            l = true;
        }
        for ( var b, d = [ e ], m = 1 - l, y = h.length; m = 0;)
                            delete f[i[g]];
                }
                return j.call(n, o, f);
            };
            e = p({
                "" : e
            }, "");
        }
        return e;
    };
}();

IE가 기본적으로 지원하지 않기 때문에 IE에서 더 잘 작동하도록 하려면 파일 내의 JSON2 파서 코드를 가져옵니다.JSON.Stringify().

여기서 찾을 수 있습니다.

IE에서 호환성 보기 설정을 열고 "호환성 보기에 추가한 웹 사이트" 목록 상자에서 localhost를 제거합니다.그것은 나에게 효과가 있었다.

JQuery 2.x는 IE 6-8과 호환되지 않습니다.JQuery 2.0 베타 2 릴리즈 노트

JQuery의 이전 버전에 대한 질문인 것은 알고 있습니다만, 이 때문에 오류가 발생했습니다.JQuery 2.x와 API 호환 JQuery 1.x를 설치하고 다음 탐지 코드를 추가했습니다.

<!--[if lt IE 9]>
 <script src="js/jquery-1.11.1.min.js"></script>
<![endif]-->
<!--[if gte IE 9]>
 <script src="js/jquery.min.js"></script>
<![endif]-->

언급URL : https://stackoverflow.com/questions/5093582/json-is-undefined-error-in-ie-only