Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Granite

[Resolvido] Problema no IE lendo XML retornado.

Recommended Posts

Olá, pessoas! :)

 

Eu estou com um problrma num código ajax usando IE, embora no Firefox tudo funcione perfeitamente.

O que tô tentando fazer é pegar dados de um XML que é gerado a pelo php, a partir do banco de dados.

Aqui o erro que o Internet Explorer retorna:

Agente do usuário: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Win64; x64; Trident/4.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; Tablet PC 2.0; AskTB5.3)

Carimbo de data/hora: Sun, 31 Jan 2010 19:32:41 UTC

 

Mensagem: O objeto não suporta propriedade ou método.

Linha: 120

Caractere: 2

Código: 0

Abaixo, a função executada logo depois de com sucesso chamar responseXML.

A linha 3 aqui é a linha 120 indicada no erro acima. Comentando essa linha, o código funciona.

"obj" é o XML retornado. "divTop" e "divLat" são as divs onde os dados do xml serão carregados.

function aplicaBanners(obj,divTop,divLat){
    dataArray = obj.getElementsByTagName("banners");
    topo = dataArray[0].getElementsByTagName("topo"); 
    lateral = dataArray[0].getElementsByTagName("lateral");
    if(topo && topo.length>0){
        bannerT = topo[0];
        tituloT = bannerT.getElementsByTagName("titulo")[0].firstChild.nodeValue;
        linkT = bannerT.getElementsByTagName("link")[0].firstChild.nodeValue;
        imagemT = bannerT.getElementsByTagName("arquivo")[0].firstChild.nodeValue;
        imgextT = imagemT.substring(imagemT.lastIndexOf('.')+1);
        if(imgextT=="swf" || imgextT=="SWF") 
            htmlT = "<a href=\"http://"+linkT+"/\"><embed src=\"admin/"+imagemT+"\" title=\""+tituloT+"\" /></a>";
        else 
            htmlT = "<a href=\"http://"+linkT+"/\"><img src=\"admin/"+imagemT+"\" title=\""+tituloT+"\" /></a>";
        divTop.innerHTML = htmlT;
    }
    if(lateral && lateral.length>0){
        htmlL = "";
        for(i=0;i<lateral.length;i++){
            bannerL = lateral[i];
            tituloL = bannerL.getElementsByTagName("titulo")[0].firstChild.nodeValue;
            linkL = bannerL.getElementsByTagName("link")[0].firstChild.nodeValue;
            imagemL = bannerL.getElementsByTagName("arquivo")[0].firstChild.nodeValue;
            htmlL += "<div><a href=\"http://"+linkL+"/\"><img src=\"admin/"+imagemL+"\" title=\""+tituloL+"\"/></a></div>";
        }
        divLat.innerHTML = htmlL;
    }
}
E aí vai o XML gerado:

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<banners>
<topo>
<titulo>Banner de teste</titulo> 
<link>http://www.teste.com</link> 
<arquivo>banners/12647915244b632fe4df78b.jpg</arquivo> 
</topo>
<lateral>
<titulo>Banner Lateral 1</titulo> 
<link>http://www.bannerlaterialone.com</link> 
<arquivo>banners/12648245294b63b0d19e3b5.jpg</arquivo> 
</lateral>
<lateral>
<titulo>Banner Lateral 2</titulo> 
<link>http://www.bannerlaterialtwo.com</link> 
<arquivo>banners/12648261174b63b705bc6f1.jpg</arquivo> 
</lateral>
</banners>

Bom, é isso. Alguém tem alguma idéia de porque o código não tá funcionando?

 

Agradeço desde já,

 

Hênio.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei porque, mas o problema aqui era a variável "topo". Eu apenas renomeei-a para "topoB" e tudo funcionou normalmente. :huh:

Por acaso seria "topo" uma palavra reservada do javascript no IE? Algum tempo atrás eu tive o mesmo problema com uma variável chamada "link". WTH...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.