Pessoal estou tendo um problema estranho ao manipular JSON no JavaScript. O problema é o seguinte estou usando Java com Struts no site. Quando acesso uma Action ela retorna Json para uma variavel no .jsp recebo esta variavel já chamando um comando javascript assim:
<script type="text/javascript" >
var amigos = '${retornodaAction}' ;
</ script>
tecnicamente funciona blz ele me retorna um array de json. Onde eu chamo o eval ou jQuery.parseJSON() e funciona normal. Só que depois q o retorno da Action ficou maior que 1404 caracteres o javascript parou de funcionar e aparece uma mensagem falando que a variavel não foi identificado. Cm alguém já aconteceu algo assim.
Pelo que imagino, o valor do retorno da action contém \n ou \r\n e está quebrando a linha, fazendo com que o Javascript fique com algo assim:
var amigos = 'aqui
quebrou a
linha' ;
E obviamente isso vai dar um erro de sintaxe. Não deve ser o tamanho da variável em si, porque isso pode ser bastante grande, não só 1404 caracteres. Não se esqueça que outros caracteres (como zero binário, ASCII NUL) podem dar problemas também.
Oi,
o entanglement tem razão,
a capacidade de amazenamento de variável no JS é muito superior. Verifique os caracteres que estão chegando da Action.
blz vou verificar, mas o estranho e que eu uso o site http://jsonlint.com/ para validar o retorno da Action (ver se o json esta correto) e o mesmo não me retorna erro. Vou verificar a entrada de caracteres invalidos, mas o retorno vem do Banco postgres é um chamado de função.
select texto from f_logs();
onde se retorna N linhas com um campo texto contendo JSON e o json e montando direto no BD por trigger…Qdo verifico no browser realmente ele quebra a linha como o entanglement.
Assim que obtiver um resultado retorno ao fórum…vlw pessoal!!!
e ai pessoal, fiz os testes e realmente não funcionou vou colocar aki o retorno do json que funciona e o retorno do json que não funciona no javascript.
Mensagem que aparece no navegador.
json_nao_funciona:20 Uncaught SyntaxError: Unexpected identifier
var json_funciona = '[
{
"contador": "1",
"cidade": "São Paulo/SP",
"amigo": "true",
"cod": "c81e728d9d4c2f636f067f89cc14862c",
"permitir": "true",
"nome": "Tiago Guedes",
"foto": "img/usuarios/c81e728d9d4c2f636f067f89cc14862c/c81e728d9d4c2f636f067f89cc14862c.jpg",
"mesmos_amigos": "<li><a href=perfil?id=c4ca4238a0b923820dcc509a6f75849b><img src=img/usuarios/c4ca4238a0b923820dcc509a6f75849b/c4ca4238a0b923820dcc509a6f75849b.jpg></a></li>",
"id_amigo": "c4ca4238a0b923820dcc509a6f75849b",
"foto_amigo": "img/usuarios/c4ca4238a0b923820dcc509a6f75849b/c4ca4238a0b923820dcc509a6f75849b.jpg"
}
]';
var json_nao_funciona = '[
{
"contador": "1",
"cidade": "/",
"amigo": "true",
"cod": "c16a5320fa475530d9583c34fd356ef5",
"permitir": "true",
"nome": "Carlos Rogério Vale",
"foto": "img/usuarios/c16a5320fa475530d9583c34fd356ef5/c16a5320fa475530d9583c34fd356ef5.jpg",
"mesmos_amigos": "<li><a href=perfil?id=c81e728d9d4c2f636f067f89cc14862c><img src=img/usuarios/c81e728d9d4c2f636f067f89cc14862c/c81e728d9d4c2f636f067f89cc14862c.jpg></a></li>",
"id_amigo": "c81e728d9d4c2f636f067f89cc14862c",
"foto_amigo": "img/usuarios/c81e728d9d4c2f636f067f89cc14862c/c81e728d9d4c2f636f067f89cc14862c.jpg"
},
{
"contador": "4",
"cidade": "/",
"amigo": "true",
"cod": "6364d3f0f495b6ab9dcf8d3b5c6e0b01",
"permitir": "true",
"nome": "Luis Carlos do Vale",
"mesmos_amigos": "<li><a href=perfil?id=a87ff679a2f3e71d9181a67b7542122c><img src=img/usuarios/a87ff679a2f3e71d9181a67b7542122c/a87ff679a2f3e71d9181a67b7542122c.jpg></a></li><li><a href=perfil?id=6ea9ab1baa0efb9e19094440c317e21b><img src=img/usuarios/6ea9ab1baa0efb9e19094440c317e21b/6ea9ab1baa0efb9e19094440c317e21b.jpg></a></li><li class=mais-amigos style='width: 90px; height: 100%;'><a href=#>Exibir todos...</a></li>",
"foto": "img/usuarios/6364d3f0f495b6ab9dcf8d3b5c6e0b01/6364d3f0f495b6ab9dcf8d3b5c6e0b01.jpg",
"id_amigo": "a87ff679a2f3e71d9181a67b7542122c",
"foto_amigo": "img/usuarios/a87ff679a2f3e71d9181a67b7542122c/a87ff679a2f3e71d9181a67b7542122c.jpg"
}
]';
Alguém ai pode me ajudar…