Pergunta

Estou enfrentando um erro que não consegui encontrar nenhuma menção em lugar nenhum.Estou desenvolvendo um serviço web WCF habilitado para AJAX com ASP.NET.No <asp:ScriptManager> da minha página mestra ASP.NET, incluí o arquivo json.js, copiado recentemente do json.org.Quando executo a página, ela falha (o VS 2008 captura uma exceção Javascript) na primeira linha do código em json.js (após muitos comentários), que é:

JSON = JSON || {};

O erro diz que JSON está indefinido:

Erro de tempo de execução do Microsoft JScript:'JSON' é indefinido

Bem, duh!É por isso que a linha está testando se está definida e, em caso afirmativo, configurando-a como um objeto vazio!É suposto ser indefinido, certo?A última vez que ouvi dizer que não foi um erro em Javascript realizar tal operação em uma variável indefinida.

Alguém pode me dar uma pista sobre o que está acontecendo aqui?Suspeito que algo deu errado em outro lugar que esteja de alguma forma causando esse problema.Não tenho experiência profunda com Javascript ou ASP.NET, então pode ser que esteja faltando alguma pegadinha comum na configuração.

Foi útil?

Solução

Você deveria estar usando JSON2.JS. A linha ofensiva foi alterada:

// 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 = {};
}

Outras dicas

Eu garantiria que sua página esteja renderizando no modo de padrões IE8; Descobri que se o documento estiver renderizando no modo peculiar ou ie7, this.JSON é indefinido.

Você pode forçar o IE8 a renderizar no modo de padrões IE8, incluindo a seguinte metatag na sua página:

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

Conforme mencionado, você deve usar json2.

O erro, no entanto, decorre do tratamento de variáveis ​​globais pelo MS.Tente window.json = window.json || {};A partir daí, o JSON deve funcionar perfeitamente.

você pode ter que fazer var JSON = JSON || {}; Eu fui para problemas semelhantes com o JavaScript no IE8.

Eu tive o mesmo problema tentando usar o Google Maps "Streetview". A janela Streetview ficaria completamente preta e eu receberia o ícone na barra de status indicando um erro. Desativei o divx como o webdev007 e o problema foi resolvido! WebDev, você é um gênio! Obrigado!

Recentemente, comecei a receber o erro JavaScript indefinido JSON e descobri que o problema se deveu a um add sobre o IE. O DivX complete também causou os avisos de conteúdo seguro nas páginas da Web que tinham todas as referências HTTPS e nenhuma HTTP (eu defino meu teor misto de exibição para solicitar a correção de referências durante o desenvolvimento da Web). Depois de desativar o DivX adicionado, o erro Javascript indefinido JSON desapareceu, bem como o aviso de conteúdo seguro incorreto pop -ups.

Eu tenho o mesmo erro e já estava usando o JSON2;

Para mim, funciona quando eu acrescento var antes da expressão:

var JSON = JSON || {};
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top