«JSON» – неопределенная ошибка только в IE
Я делаю вызов AJAX для службы WCF, и когда я передаю свои данные, я использую JSON.stringify ()
Вызов возвращается и отлично работает в FF и Chrome, но не в IE8. Я получаю сообщение об ошибке: «JSON» не определен
предложения?
- Разница между ссылкой в Интернете и ссылкой на обслуживание?
- Предоставленная схема URI «https» недействительна; ожидаемый «http». Имя параметра: через
- Как установить Json.Net в качестве сериализатора по умолчанию для службы WCF REST
- WCF HttpTransport: stream с буферизацией TransferMode
- Подробное исследование исключения таймаута WCF
ps Я также хочу, чтобы это работало в IE7
- В модели веб-программирования WCF можно написать рабочий контракт с массивом параметров строки запроса (то есть с тем же именем)?
- Создание веб-службы WCF с помощью запросов GET
- Передача сложных объектов в службу restа WCF
- Как создать пользовательские атрибуты пространства имен XML при использовании устаревшей службы SOAP?
- Большой запрос веб-службы WCF с ошибкой (400) Ошибка HTTP-запроса
- WCF на IIS8; * .svc-обработчик не работает
- Как десериализация WCF создает объекты без вызова конструктора?
- Шаблон для вызова службы WCF с использованием async / wait
Используйте 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, и добавил следующий код обнаружения: