«JSON» – неопределенная ошибка только в IE
Я делаю вызов AJAX для службы WCF, и когда я передаю свои данные, я использую JSON.stringify ()
Вызов возвращается и отлично работает в FF и Chrome, но не в IE8. Я получаю сообщение об ошибке: «JSON» не определен
предложения?
- В чем разница между веб-методом asp.net и службой wcf?
- Управление сложными файлами Web.Config между средами развертывания
- Используете ли вы типы enums в своих веб-службах WCF?
- Ошибка 0x80005000 и DirectoryServices
- Передача сложных объектов в службу restа WCF
ps Я также хочу, чтобы это работало в IE7
- Как я могу игнорировать свойство при сериализации с помощью DataContractSerializer?
- Когда использовать атрибуты DataContract и DataMember?
- xmlHttp.getResponseHeader + Не работает для CORS
- Поддержка CORS в службах REST WCF
- Разница между ссылкой в Интернете и ссылкой на обслуживание?
- Использование пользовательской десериализации тела WCF без изменения десериализации шаблона URI
- Веб-служба и служба WCF
- Почему разработчик должен использовать веб-службы вместо прямых подключений к db?
Используйте json2 для последовательной реализации перекрестного браузера.
У меня была проблема с IE9. IE9 показывал мою страницу в режиме «quirks», решение было просто добавить . Это вывело меня из режима «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, импортируйте код JSON2-парсера в ваш файл, поскольку IE по умолчанию не поддерживает JSON.Stringify()
.
Здесь можно найти
В IE откройте настройки представления совместимости и удалите локальный хост из списка для «Веб-сайты, добавленные в представление совместимости». Это сработало для меня.
JQuery 2.x больше не совместим с IE 6-8. Замечания по выпуску JQuery 2.0 beta 2
Я знаю, что главный вопрос касается старых версий JQuery, но это вызывало ошибку для меня. Я установил JQuery 1.x, совместимый с API с JQuery 2.x, и добавил следующий код обнаружения: