Post mais técnico seria impossível né? Enfim, se você leu o título e está lendo até agora é porque sabe do problema que estou falando: o ajax do jQuery tem um problema quando se trabalha com XML, o problema só acontece adivinha onde? No nosso querido browser Internet Explorer.
Mas como quase tudo na vida, tem solução:
Solução número 1 – Pare de trabalhar com XML e comece a usar JSON.
Solução número 2 – Existe um parseXML que funciona pro IE. E alguém de muita boa vontade que se chama Jonathan Sharp fez disso um plugin que pra jQuery que se chama XMLDOM .
E como funciona?
assim:
Forma normal (que normalmente dá erro no IE)
$.ajax({
url: 'xml/erros.xml,
type: "GET",
dataType: "xml",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
success: function(xml){
var htm ='';
$(xml).find('item').each(function(n){
htm += $(this).text();
}
$('#erros').append(htm);
}
});
Com o plugin XMLDOM
$.ajax({
url: 'xml/erros.xml,
type: "GET",
dataType: "html",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
success: function(xml){
var htm ='';
$.xmlDOM(xml).find('item').each(function(n){
htm += $(this).text();
}
$('#erros').append(htm);
}
});
E pra quem quiser evitar o trabalho, pode baixar o plugin direto aqui.
[]s







Danilo é programador interface da AgênciaClick, corinthiano, vegan e geek. Gasta suas horas com xadrez, poker, vendo futebol e esporadicamente dedica 5 minutos semanais à Belinha - mas é mto provável que esse tempo agora seja dividido com o TidBits... Danilo sabe php, rails, javascript, xhtml, css, jquery, webstandards, seo, sql, opensocial, etc. E já fez sites para espn, fiat, fila, umbro, fgv, gatorade, petrobras, etc. Veja o 
Belinha agora é arquiteta de informação na RMG Connect, está cozinhando melhor, mas postando cada dia menos... ainda assim, sempre que dá aparece aqui no TidBits para dar seus pitacos sobre desenvolvimento... (Belinha é casada com o Danilo)
June 4th, 2009 at 11:30 am
Qual o problema que ocorre no IE, Danilo?
Nunca vi isso acontecer, até porque há tempos adotei a solução 1 para qualquer implementação! hehe
[]s!
June 7th, 2009 at 2:10 pm
Tb nunca passei por este problema, uso XML varias vezes so para poder usar o magnifico plugin Taconite e nunca tive problemas.
June 10th, 2009 at 3:47 pm
[...] Solução II: O Bug do parse XML no IE com o ajax do jQuery [...]
June 11th, 2009 at 11:27 am
@Chris: Ele não consegue ler as tags, você consegue imprimir o retorno inteiro (o xml já parseado para string), mas o jQuery não consegue buscar na string…
Eu sei disso porque estou passando por esse problema desde ontem, e só agora achei seu site e vou testar a segunda solução…
June 11th, 2009 at 12:21 pm
Só pra constar, funcionou perfeitamente!
June 13th, 2009 at 10:26 pm
Boa Danilão!
É realmente um saco mexer com xml usando jQuery no iE6. Sorte nossa agora saber essa solução.
Estou realmente de cansado do iE6, até quando teremos que nos preocupar com essa coisa ??
July 10th, 2009 at 6:26 pm
Nesses dias, encontrei uma outra solução para quem quiser não optar pelo plugin e também continuar a usar JQuery. É essa aí:
$.ajax({
url: “data.xml”,
dataType: ($.browser.msie) ? “text” : “xml”,
success: function(data){
var xml;
if (typeof data == “string”) {
xml = new ActiveXObject(“Microsoft.XMLDOM”);
xml.async = false;
xml.loadXML(data);
} else {
xml = data;
}
// Returned data available in object “xml”
}
});
(fonte: docs.jquery.com)
July 20th, 2009 at 2:27 pm
Só para contribuir…
Se alguém estiver genrando o XML direto do PHP, pode usar a opção 1 sem problemas, basta colocar no arquivo php:
header(“Content-Type: text/xml; charset=iso-8859-1″);
echo “”;
echo “seu conteudo xml”;
Testado no IE8 e 6.
August 17th, 2009 at 1:22 pm
Danilo, estava procurando por algo a respeito no google com “ajax xml jquery problem IE” [s/ aspas]. Teu blog foi a primeira ocorrência.
Sua solução é boa, mas a do Alessandro Vieira ganhou pela simplicidade e atenta para o que não tinha percebido: sem o header, o browser acha que é html com tags erradas e não um xml. Agora o IE e também o FF renderizam como xml de verdade. Abs
August 19th, 2009 at 11:53 am
Danilo,
Pô cara, eu nem sabia que existia esse problema! Sempre gero XML usando o header() PHP que o Alessandro falou.
BTW, no server-side PHP, DOM Document (http://br2.php.net/domdocument) FTW!
August 24th, 2009 at 11:56 am
Muito bom Danilo! Funcionou perfeitamente.
Abraço!
August 26th, 2009 at 5:09 pm
comigo só funcionou quando coloquei isso:
echo “”;
em cima dos meus xmls. mesmo usando o header() PHP
October 17th, 2009 at 12:30 pm
Este exemplo http://www.think2loud.com/examples/xml/ funciona no IE sem o Plugin.
October 17th, 2009 at 12:33 pm
Este tbm funciona , pelo menos aqui no meu IE(8)
http://www.simplyprofound.com/samples/xml_jquery/
October 31st, 2009 at 2:04 pm
Eu tô tentando integrar xml em um slideshow de noticias que utiliza jquery, só que não roda nem no mozilla e nem em nada. Vocês podem me ajudar?
Att.
January 2nd, 2010 at 12:32 am
Parabéns pelo post!!!
Me quebrou uma árvore
June 12th, 2010 at 9:28 pm
Dr. Danilo, legal demais. Esperamos que implementem esta correção no jquery 1.3.+2.
Deus te ajude.
July 25th, 2010 at 6:13 pm
Putz, tava quebrando a cabeça a horas quando achei seu post. Massa. Valeu!