Tratando erros no ajax![RESOLVIDO]

8 respostas
jeloy

Boa Tarde pessoal!

Tenho um formulário de busca feito através do ajax que está funcionando legal. Atualmente ele envia os parametros para uma servlet que faz a busca e retorna em XML.

Eu gostaria de saber como faço para tratar erros de requisição do ajax. As vezes da connection timeout, ou outro erro de busca no banco de dados e gostaria de passar isso para o usuário.

Qual a melhor maneira?

Segue meu javascript

<script language="javascript">
            function loadXMLDoc(){
                document.getElementById("result").innerHTML="&lt;CENTER&gt;<img  />&lt;/CENTER&gt;";
                var xmlhttp;
                if (window.XMLHttpRequest)
                {// code for IE7+, Firefox, Chrome, Opera, Safari
                    xmlhttp=new XMLHttpRequest();
                }
                else
                {// code for IE6, IE5
                    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
                }
                xmlhttp.onreadystatechange=function() {
                    if (xmlhttp.readyState==4 && xmlhttp.status==200) {
                        document.getElementById("result").innerHTML+=".......";
                        var xml = xmlhttp.responseXML;
                        
                        var rootNode = xml.getElementsByTagName("users").item(0);
                        var userNode = rootNode.getElementsByTagName("user");
                        var sizeUserNode = userNode.length;
                        document.getElementById("result").innerHTML="&lt;table&gt;";
                        for (i=0; i&lt;sizeUserNode; i++) {
                            var nomeNode = userNode.item(i).getElementsByTagName("nome");
                            var loginNode = userNode.item(i).getElementsByTagName("login");
                            var cnpjNode = userNode.item(i).getElementsByTagName("cnpj");
                            document.getElementById("result").innerHTML+="&lt;tr&gt;";
                            document.getElementById("result").innerHTML+="&lt;td&gt;";
                            document.getElementById("result").innerHTML+=nomeNode.item(0).firstChild.data + " | ";
                            document.getElementById("result").innerHTML+=loginNode.item(0).firstChild.data + " | ";
                            document.getElementById("result").innerHTML+=cnpjNode.item(0).firstChild.data + " | ";
                            document.getElementById("result").innerHTML+="&lt;/td&gt;";
                            document.getElementById("result").innerHTML+="&lt;/tr&gt;";

                        
                        }
                        document.getElementById("result").innerHTML+="&lt;/table&gt;";
                    }
                }
                var cnpj = document.getElementById("cnpj").value;
                var url = "SearchUser?cnpj="+cnpj;
                xmlhttp.open("GET", url,true);
                xmlhttp.send();
            }
        &gt;&lt;/script&gt;

Fico no aguardo!

Valeu!

8 Respostas

drsmachado

Por quê criou outro tópico, sendo que este http://guj.com.br/java/243575-duvida-ajax tem o mesmo conteúdo?

jeloy

drsmachado, me desculpe. Achei minha dúvida mal reformulada neste post que voce citou, por este motivo resolvi abrir outro.

Obrigado pela preocupação.

drsmachado

Aliás, trate isto no teu servlet, se ocorrer algum erro, simplesmente capture-o, faça uma análise do mesmo, verifique do que se trata e retorne. Pode ser pelo XML mesmo.

jeloy

Hmm…

então no caso eu criaria outra tag no xml como “” e no javascript antes de qualquer coisa mando verificar se esta tag está null?

esta é a melhor forma de ser feito, ou existe algum outro padrão?

Obrigado pela atenção.

drsmachado

Eu não trabalho muito com essa estrutura, mas, se precisasse, usaria isto mesmo. Coloca erro, confere se está null e aí faz o que deve fazer

jeloy

Certo…

eu fiz aqui e funcionou legal, quando cair no bloco catch ele preenche a tag erro.

agora uma dificuldade que encontrei, mesmo no bloco try tenho que preencher a tag erro com algo, se ela for nulo o javascript nao funciiona. Qual seria a solução pra isso?

drsmachado

Sempre que tenho essas dificuldades uso o bom o velho none indicando que não há nada e qualquer outro valor quando existe algo errado.

jeloy

hehehe

eu usei false

mas muito obrigado cara!

ajudou bastante :smiley:

Criado 3 de junho de 2011
Ultima resposta 3 de jun. de 2011
Respostas 8
Participantes 2