Tratando erros no ajax![RESOLVIDO]

8 respostas
J

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

D

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

J

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

Obrigado pela preocupação.

D

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.

J

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.

D

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

J

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?

D

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.

J

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