programing

Internet Explorer 8에서 정의되지 않은 JSON 개체

cafebook 2023. 4. 3. 21:44
반응형

Internet Explorer 8에서 정의되지 않은 JSON 개체

현재 JavaScript 파일을 쓰고 있으며 다음 행이 있습니다.

var res = "JSON=" + JSON.stringify(result);

결과는 이 행 바로 위에 설정되어 있습니다.문제는 IE8(IE8에만 해당)에서 JSON이 정의되어 있지 않다고 보고하고 있다는 것입니다.IE8은 JSON 지원을 구현한 브라우저이기 때문에 어떻게 해야 할지 모르겠습니다.무슨 일인지 아는 사람 있어요?

선호하는 방법인 표준 작업을 사용하여 실제로 IE 8 모드에 있는지 확인합니다.

<!DOCTYPE html>

...또는 바람직하지 않은 방법인X-UA-Compatible메타 태그/메타...

<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />

자세한 내용은 문서 호환성 정의를 참조하십시오.

jQuery.parseJ 사용이미 JQuery를 사용하고 있는 경우에 대비하여 SON이 해결해 주었습니다.

doctype 또는 잘못된 doctype이 없거나 html 구문에 오류가 있을 경우 IE는 예상과 다른 문서 모드를 사용해야 합니다.

테스트 문서에 간단한 " "를 사용하고 있었고, HEAD 태그 작성 창에는 TITLE 태그가 없습니다.JSON은 정의되지 않습니다.

브라우저 버전과 비교하여 리소스를 테스트하는 것이 좋습니다.또한 사용자가 문서 모드의 에뮬레이션과 함께 IE를 사용할 수 있다면 네이티브가 정의되어 있지 않을 때 JSON.parse 및 JSON.stringify를 제공하는 코드를 사용하는 것이 좋습니다.

function parseJson(jsonString) {
    if ($.browser.msie && $.browser.version < 8) {
        return eval('(' + jsonString + ')');
    }
    else {
        return JSON.parse(jsonString);
    }
}

에도 불구하고 발생할 수 있다<!DOCTYPE html>페이지 인코딩이UTF-8와 함께BOM(바이트 순서 마크).파일 저장 시도UTF-8없이.BOM적절한 텍스트 에디터를 사용합니다.

js 파일에 다음 코드를 넣습니다.

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 (str) {
if (str === "") str = '""';
eval("var p=" + str + ";");
return p;
 };

jQuery 버전을 확인합니다.jQuery 2.0은 IE 6, 7, 8의 지원을 중단합니다.대신 jQuery 1.x를 사용합니다.이는 아직 공식적으로 지원됩니다.이 코드를 사용할 수 있습니다.

<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>

jquery migrate에 대한 자세한 내용을 참조하십시오.

동작하지 않는 경우는, 이 문서를 확인해 주세요.

제 경우 정의되지 않은 오류는 JSON 라이브러리가 없기 때문입니다.

다음과 같이 JSON 개체를 추가할 수 있습니다(상대 경로를 자신의 경로로 바꿉니다).

<script>
        if (typeof window.JSON == 'undefined') {
          document.write('<script src="../scripts/json2.js"><\/script>'); 
        }
</script>

json2 라이브러리의 경우:http://cdnjs.com/libraries/json2/

json3 라이브러리도 있습니다.http://cdnjs.com/libraries/json3/

그런 다음 코드로 참조할 수 있습니다.

var array = [];
array[1] = "apple";
array[2] = "orange";
alert(JSON.stringify(array));

언급URL : https://stackoverflow.com/questions/4715373/json-object-undefined-in-internet-explorer-8

반응형