Limite de Tamanho de Variavel String no JavaScript

4 respostas
A

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.

4 Respostas

E

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.

L

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.

A

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!!!

A

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…

Criado 20 de dezembro de 2011
Ultima resposta 21 de dez. de 2011
Respostas 4
Participantes 3