Pregunta

Estoy experimentando un error del que no he podido encontrar ninguna mención. Estoy desarrollando un servicio web WCF habilitado para AJAX con ASP.NET. En mi página maestra de ASP.NET & Lt; asp: ScriptManager & Gt ;, incluí el archivo json.js, copiado recientemente de json.org. Cuando ejecuto la página, falla (VS 2008 detecta una excepción de Javascript) en la primera línea de código en json.js (después de muchos comentarios), que es:

JSON = JSON || {};

El error dice que JSON no está definido:

  

Error de tiempo de ejecución de Microsoft JScript: 'JSON' no está definido

Bueno, duh! ¡Es por eso que la línea está probando si está definida y si es así configurándola en un objeto vacío! Se supone que no está definido, ¿verdad? La última vez que escuché que no era un error en Javascript realizar una operación de este tipo en una variable indefinida.

¿Alguien puede darme una pista de lo que está pasando aquí? Sospecho que algo salió mal en otro lugar que de alguna manera está causando este problema. No tengo mucha experiencia con Javascript o ASP.NET, por lo que es posible que me falte algo común en la configuración.

¿Fue útil?

Solución

Debería usar json2.js . La línea ofensiva ha cambiado:

// Create a JSON object only if one does not already exist. We create the
// methods in a closure to avoid creating global variables.

if (!this.JSON) {
    this.JSON = {};
}

Otros consejos

Me aseguraría de que su página se procese en modo estándar IE8; Descubrí que si el documento se procesa en modo Quirks o IE7, this.JSON no está definido.

Puede forzar a IE8 a renderizar en modo estándar IE8 al incluir la siguiente metaetiqueta en su página:

<meta http-equiv="x-ua-compatible" content="IE=8" />

Como se mencionó, debería usar json2.

El error, sin embargo, proviene del manejo de MS de variables globales. Prueba window.JSON = window.JSON || {}; A partir de entonces, JSON debería funcionar bien.

puede que tenga que hacer var JSON = JSON || {}; Me he encontrado con problemas similares con Javascript en IE8.

Tuve el mismo problema al intentar usar google maps " streetview " ;. La ventana de streetview se volvería completamente negra y obtendría el ícono en la barra de estado que indica un error. ¡Inhabilité DivX como lo hizo webdev007 y el problema se resolvió! Webdev, eres un genio! ¡Gracias!

Recientemente comencé a recibir el error de JavaScript indefinido de JSON y descubrí que el problema se debía a un complemento DivX reciente en IE. El complemento DivX también provocó advertencias de contenido seguro en las páginas web que tenían todas las referencias https y no http (configuré mi contenido mixto Display en Preguntar para corregir referencias durante el desarrollo web). Después de deshabilitar el complemento DivX, el error JavaScript indefinido de JSON desapareció, así como las ventanas emergentes de advertencia de contenido seguro erróneas.

Tengo el mismo error y ya estaba usando json2;

Para mí funciona cuando agrego var antes de la expresión:

var JSON = JSON || {};
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top