responseXML retornando null no Chrome

4 respostas
Menighin

Olá galera!
Estou com um problema em um script mto simples e não sei do que se trata, já dei uma pesquisada na web mas não achei nada que resolvesse. O script é o seguinte:

Script:

function openAjax() {
    var ajax;
    try{
        ajax = new XMLHttpRequest(); // XMLHttpRequest para Firefox, Safari, dentre outros.
    }catch(ee){
        try{
            ajax = new ActiveXObject("Msxml2.XMLHTTP"); // Para o Internet Explorer
        }catch(e){
            try{
                ajax = new ActiveXObject("Microsoft.XMLHTTP"); // Para o Internet Explorer
            }catch(E){
                ajax = false;
            }
        }
    }
    return ajax;
}

function buscar () {
    var ajax = openAjax();
    
    ajax.open ("GET", "buscaPonto.jsp?keywords=" + keyWords + "&tipo=" + tipo, true);
    ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");

    ajax.onreadystatechange = function() {
        if(ajax.readyState == 4) { // Quando estiver tudo pronto.
            if(ajax.status == 200) {
                var resultado = ajax.responseXML;
                alert (resultado);
            }
            else {
                alert ("Erro");
            }
        }
    }
    ajax.send(null)
}

E a página
buscaPonto.jsp:

<%@page contentType="text/xml" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <%
            response.setContentType("text/xml");
            String XML = "<?xml version='1.0' ?>\n" 
                       + "<localidades>\n"
                       + "   <localidade>\n"
                       + "      <nome>Restaurante Teste</nome>\n"
                       + "      <lat>-43.004</lat>\n"
                       + "      <lgn>-30.543</lgn>\n"
                       + "      <descricao>Restaurante de teste bla bla bla bla</descricao>\n"
                       + "   </localidade>\n"
                       + "</localidades>";
            System.out.println(XML);
            out.print(XML);
        %>
    </body>
</html>

Tá com um exemplo besta sem nem buscar do banco de dados porque primeiro eu quero fazer isso funcionar… E com o System.out.println(XML); ali tá saindo

<?xml version='1.0' ?>


Restaurante Filho da Puta
-43.004
-30.543
Um lugar filho da puta de bom



como deveria ser…

O problema é que no firefox e no IE ele funciona, isto é, o alert (resultado) alerta ObjectXMLDocument e Object respectivamente, mas no Google Chrome ele simplesmente retorna null… =S

Alguém sabe o que pode ser?

Agradeço desde já…

4 Respostas

D

usa servlet nunca vai funcionar pois o arquivo que você esta baixando com o ajax é um arquivo HTML e não xml…

usa esse codigo so que com uma servlet…

response.setContentType("text/xml"); String XML = "<?xml version='1.0' ?>\n" + "<localidades>\n" + " <localidade>\n" + " <nome>Restaurante Teste</nome>\n" + " <lat>-43.004</lat>\n" + " <lgn>-30.543</lgn>\n" + " <descricao>Restaurante de teste bla bla bla bla</descricao>\n" + " </localidade>\n" + "</localidades>"; System.out.println(XML); out.print(XML);
não entendi o uso do System.out.println :slight_smile: so que não vai sair nada na pagina… :slight_smile:

Menighin

O System.out foi só pra ver se a string tava ficando certinha =p

Mas então:
Quando eu mando dar out.print(XML); essa é a response da página, certo? Então, uma vez que a string XML tem o formato de uma página XML e eu setei o cabeçalho dela pra XML, não era pra ele receber o response como um XML? (Sou bem novo nessa área, malz se to falando bestera =p)

E otra: Porque funciona no Firefox e no IE mas nao no Chrome?

Vou tentar fazer com uma servlet

D

sei lá deve ser o modo de leitura, no caso do IE e do Firefox não importa o Content-Type eles pegam a tag em si, já no chrome sim ele se importa com o Content-Type
no seu caso o Content-Type usando jsp esta vindo como “text/html” e não “text/xml”, por isso o “null”.

Menighin

Com o servlet realmente funcionou, valeu mesmo =)

Mas ainda não concordo do porque não funcionar do outro jeito =p

Obrigado, abs o/

Criado 6 de julho de 2012
Ultima resposta 8 de jul. de 2012
Respostas 4
Participantes 2