Pergunta

Estou fazendo um web onde eu fortemente usar solicitações de AJAX para um serviço XML. Na verdade, o meu web é um front-end com quase nenhum servidor qualquer e usa AJAX para se comunicar com o back-end.

Tudo estava indo bem (I desenvolvido e testado no Ubuntu 9.04 e Firefox 3.0 como um navegador). Um dia eu decidi ver como o meu web fez no IE8 ... horror!

Nada estava funcionando como maravilhosamente fez no Firefox. Para ser mais específico, o Request.HTML do não estavam funcionando. Como eu disse, a minha web dependia fortemente de que, por isso, nada funcionou.

Passei um dia tentando obter algo em execução, mas não tive sorte .. A única conclusão a que cheguei foi que o XML foi analisado incorretamente (Espero que eu estou em erro). Vamos para o código:

var req = new Request.HTML({
        url: 'service/Catalog.groovy',

        onSuccess: function(responseTree, responseElements) {

            var catz = responseElements.filter('category');
            catz.each(function(cat){
                // cat = $(cat);
                var cat_id = cat.get('id');
                var subcategory = cat.getElement('subcategory');
                alert(cat_id);
                alert(cat.get('html'));
                alert(subcategory.get('html'));
           }
       },
       onFailure: function(){...}

});

Por exemplo, aquele pedaço de código. No Firefox, ele funcionou perfeitamente. É alertado uma identificação (por exemplo, 7), em seguida, ele mostrou o conteúdo do elemento de categoria, por exemplo:

<subcategory id='1'>
      <category_id>7</category_id>
      <code>ACTIO</code>
      <name>Action</name>
</subcategory>

e, em seguida, ele mostrou o conteúdo de algum elemento interno, neste caso:

<category_id>7</category_id>
<code>ACTIO</code>
<name>Action</name>

No IE8, o primeiro alerta trabalhou OK (alertado 7) mas o próximo alerta (alert (cat.get ( 'html'));) deu uma cadeia vazia eo último emitiu uma exceção ... ele disse algo sobre subcategoria beeing nulo.

O que eu concluído com tudo isso é que os elementos onde analisado corretamente no Firefox, mas no IE8 Eu só tenho as marcas e os atributos OK, todo o resto estava completamente errado (na verdade, em falta). Quer dizer, o conteúdo interno de todos elementos da resposta onde foi!

Outro fato que você poderia usar: este código:

alert(cat.get('tag')); resulted in
      Firefox: category
      IE8: /category <-----------(?)

hmm o que mais ... oh sim ... a linha que você vê comentado acima (cat = $(cat);) foi alguma coisa Tentei fazer para corrigir isso. Eu li nos Docs MooTools que o IE necessário explicitamente chamada a função $ em elementos para obter todo o elemento-magic ... mas isso não corrigir alguma coisa.

Eu estava tão desesperada ... Eu até brincava ao redor com código mootools.js

OK, então ... O que eu quero que você, querido mootool-pro é para me ajudar a resolver este problema, pois eu realmente precisa da web para a função no IE8, e na verdade eu escolhi mootools para esquecer os problemas de compatibilidade ...

ps: se algo não está claro, por favor, pergunte! Eu apreciaria qualquer ajuda: D

Foi útil?

Solução

Eu tive um problema semelhante como este há algum tempo atrás usando jQuery. O problema é que, no IE, os dados de resposta de entrada necessário para ser manuseado pelo ActiveX objecto Microsoft.XMLDOM.

Os passos gerais são:

  1. instanciar o objeto ActiveX.

    var oXmlDoc = new ActiveXObject("Microsoft.XMLDOM");

  2. passe-os dados de resposta de entrada e carregá-lo.

    oXmlDoc.loadXML(sXmlResponseData);

  3. analisá-lo conforme necessário.

Você pode conferir a resolução completa aqui .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top