‘JSON’ es un error indefinido solo en IE

Estoy haciendo una llamada AJAX a un servicio WCF y cuando paso mis datos utilizo JSON.stringify ()

La llamada vuelve y funciona bien en FF, & Chrome, pero no en IE8. Me sale un error: ‘JSON’ no está definido

sugerencias?

ps también quiero que esto funcione en IE7

Use json2 para una implementación consistente de navegador cruzado.

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

Tuve el problema con IE9. IE9 estaba renderizando mi página en el modo “peculiaridades”, la solución era simplemente agregar . Esto me sacó del modo “peculiar”, que estoy seguro solucionó más que solo este problema.

Actualizar

Verifique la biblioteca JSON3 . Funciona a las mil maravillas.

Cambios de JSON2

Espero que esto ayude.


Espero que esto ayude. Lo obtuve de algunas fonts en línea hace mucho tiempo. no tienen sus enlaces.
Lo siento, no puedo citar referencias.

 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; }; }(); 

Para que su función funcione mejor en IE, importe el código del analizador JSON2 en su archivo, ya que IE por defecto no es compatible con JSON.Stringify() .

Se puede encontrar aquí

En IE abra la configuración de vista de compatibilidad y elimine el host local del cuadro de lista para “Sitios web que ha agregado a la Vista de compatibilidad”. Funcionó para mí

JQuery 2.x ya no es compatible con IE 6-8. Notas de la versión beta 2 de JQuery 2.0

Sé que la pregunta principal está relacionada con las versiones anteriores de JQuery, pero esto me estaba causando el error. Instalé JQuery 1.x, que es compatible con API con JQuery 2.x, y agregué el siguiente código de detección: