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.
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.
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: