"JSON" - неопределенная ошибка только в IE
Я делаю вызов AJAX в службу WCF, и когда я передаю свои данные, я использую JSON.преобразовать в строки()
вызов возвращается и отлично работает в FF, & Chrome, но не IE8. Я получаю сообщение об ошибке: "JSON" не определен
предложения?
p.s. Я также хочу, чтобы это работало в IE7
6 ответов
У меня была проблема с IE9. IE9 рендеринг моей страницы в режиме "причуды", решение было просто добавить <!DOCTYPE html>
. Это вывело меня из режима" причуд", который, я уверен, исправил больше, чем просто эту проблему!
обновление
Регистрация JSON3 библиотека. Это работает как шарм.
надеюсь, это поможет.
надеюсь, что это помогает. Я получил это из нескольких онлайн-источников. у них нет связей.
жаль, что я не могу привести ссылки.
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 import json2 parser code в вашем файле, так как IE по умолчанию не поддерживает JSON.Stringify()
.
можно найти здесь
в IE откройте Настройки представления совместимости и удалите localhost из списка "веб-сайты, которые вы добавили в представление совместимости". У меня получилось.
JQuery 2.x больше не совместим с IE 6-8. примечания к выпуску jQuery 2.0 beta 2
Я знаю, что главный вопрос касается более старых версий JQuery, но это вызвало ошибку для меня. Я установил JQuery 1.x, который API-совместим с JQuery 2.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]-->