使用jQuery将XML加载到浏览器中

时间:2011-01-18 16:42:46

标签: javascript jquery xml

有谁知道为什么下面的代码在FireFox中不起作用,但在IE中(在服务器上)以及在本地反过来?

function load_xml(msg) {   //this function will load xml even used in IE or any other browser
            if ( typeof msg == 'string') {
                data = new ActiveXObject( 'Microsoft.XMLDOM');
                data.async = false;
                data.loadXML( msg);
                } else {
                    data = msg;
                }
                return data;
        }

        function getTitle(letter) {
            $('#wordle').html('');
    jQuery.ajax({
        type: "POST",
        url: "wordle-list.dat",
        dataType: ($.browser.msie) ? "text/xml" : "xml",
        success: function(xml) {
                    var xml2 = load_xml(xml);
            var i=0;
            $(xml2).find('wordle').each(function(){
                        $(xml2).find('w').each(function(){ //can change to w:lt(50)
                            var tmpHold = $(this).text();
                            if (tmpHold.substring(0, 1) == letter) {
                                $('#wordle').append('<li class="w">'+$(this).text()+'</li>');
                            }
                        });
                    });
        }
    });
}

3 个答案:

答案 0 :(得分:0)

我的猜测是因为您在服务器上的IE中安装了ActiveX,而不是在Firefox上安装了ActiveX,反之亦然。虽然很难从代码中说出来。代码在什么行上在服务器和客户端机器上都失败了?

答案 1 :(得分:0)

试试这个:

 function load_xml(msg) {   
         if ( typeof msg == 'string') {
            if (window.DOMParser)//Firefox
              {
                parser=new DOMParser();
                data=parser.parseFromString(msg,"text/xml");
            }else{ // Internet Explorer
               data=new ActiveXObject("Microsoft.XMLDOM");
               data.async="false";
               data.loadXML(msg);
           }
         } else {
            data = msg;
         }
            return data;
    }    

答案 2 :(得分:0)

对于每个人的奇迹:

这是因为我的文件扩展名为.dat,服务器说它是二进制mime类型...