XML e Ajax (Problemas com o tamanho do XML)

2 respostas
christianovale

Boa tarde, amigos,

Criei aqui uma funçao Auto-Completar com Ajax onde o cliente começa a digitar o nome e o sistema abre uma caixa de auto-sugestao com resultados encontrados no banco de dados.

Bem, o servidor retorna um arquivo XML com o formato:

<?xml version="1.0" encoding="ISO-8859-1"?>   
  <clientes>   
    <cliente codCliente="503">   
      <nome>ARRAIL BOREL E MARIA AMORIM BOREL - SITIO DO ARROZAL</nome>   
    </cliente>   
  <cliente codCliente="587">   
    <nome>AILTON ANGELO DE PAULA</nome>   
  </cliente>   
</clientes>

O problema:

Quando a lista de resultados é muito extensa ocorre um erro na funcao que recebe os dados da pagina:

function recuperarListaNomeCodigoServidor(){   
      if (request.readyState == 4) {   
        clearTimeout(timeOutId);//limpa o timer   
         if (request.status == 200) {   
   enviado = false;   
   mensagem(false);   
   resposta = request.responseXML;   
   var nome = resposta.getElementsByTagName("nome")[0].firstChild.data;   
  
                //Essa linha  erro   
   dados = resposta.getElementsByTagName("nome");   
  
    if(dados[0].firstChild.data != "Nenhum Resultado.") {   
         adicionarNomeCodigo(resposta);   
    }   
    else limparResultados();   
    }   
      else if (request.status == 404){   
      limparResultados();   
    }   
       }   
}

Alguem sabe se existe alguma limitaçao quanto ao tamanho do XML, ou porque isso acontece e como faço para resolver?

Desde já obrigado!

2 Respostas

guilherme.chapiewski

Cara, eu nunca ví esse tipo de coisa acontecer (porém nunca trabalhei com XML gigantesco). A única vez que eu fiz um negócio desse eu limitava minha query para retornar somente os 10 primeiros registros. Talvez seja bom fazer algo do tipo…

Qual o erro que você recebe?

Abraços,
Guilherme Chapiewski

christianovale

Olá, amigo, obrigado pela resposta.

Na verdade eu consegui resolver este problema ontem mesmo.
Eu estava achando muito estranho o fato acontecido, daí depois de muito pelejar eu construi um loop pra carregar um XML e envia-lo pra funçao ajax pra eu tentar descobrir se havia algum limite de tamnaho para ele, mas o que descobri “matou dois coelhos com uma paulada só”!
Fiz um loop que carregou 10.000 registros no Arquivo XML e a funçao ajax trabalhou perfeitamente com ele.

Ou seja, nao existe, entao, limite de tamanho para o arquivo XML.

O que descobri foi que dentre os dados retornados do banco de dados, havia alguns registros com o carctere “&” (e comercial) que por ser palavra reservada estava de alguma forma impedindo o percorrimento da arvore do XML. (nao acreditei quando isso aconteceu, estava tentando resolver isso o dia inteiro! )

Entao tive que criar uma outra funçao para nao deixar registros com ‘&’ sejam inseridos no banco de dados.

Mas, de qualquer forma, valeu a ajuda!
Obrigado!

Criado 16 de janeiro de 2007
Ultima resposta 17 de jan. de 2007
Respostas 2
Participantes 2