论坛首页 Web前端技术论坛

ie中jQuery无法解析xml文件的解决方案

浏览 5108 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2010-06-13  

功能描述:使用jQuery解析已经定义好内容的xml文件

1.xml文件:menu.xml

<?xml version="1.0" encoding="gb2312"?>
<menus>
    <menu>
        <id>1</id>
        <name>system</name>
        <parentId>0</parentId>
        <target>mainFrame</target>
        <url></url>
    </menu>
    <menu>
        <id>2</id>
        <name>company</name>
        <parentId>1</parentId>
        <target>mainFrame</target>
        <url></url>
    </menu>

</menus>

2.自定义js文件解析xml文件:index.js

$(document).ready(function(){
    $.ajax({
           url:"xml/menu.xml ",
           type:"POST",
           dataType:"xml",
           success:function(data){
                      $(data).find("menu").each(function(){

                               alert("success");
                               alert($(this).text());
                      });
           },
           error:function(data){
                     alert("fail:");
           }
    });
});

3.新建index.html文件引入jQuery.js、xml文件及index.js文件,在ie中(任何版本)运行index.html,结果总是弹出“fail”,但是在Firefox中的结果却是“success”。

在网上搜了很多资料,最后在这篇文章http://www.newmediafun.com/2009/07/parsing-xml-with-jquery-in-internet-explorer/上找到了解决方案。是因为ie中的限制无法正确解析xml文件,它解析出的是一个text对象(在我引用的文章中有更详细的解释)所以针对这个加入判断就可以解决了

正确代码index.js

$(document).ready(function(){
    $.ajax({
         url:"xml/menu.xml",
         type:"POST",
         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; 
                }
              $(xml).find("menu").each(function(){

                  alert("success");
                  alert($(this).text());
              });
        },
       error:function(data){
               alert("fail:");
       }
    });
});

   发表时间:2010-06-13  
怎么可能?
0 请登录后投票
   发表时间:2010-06-17  
楼上english厉害啊
我看到英文网站头就大,怎么弄啊
0 请登录后投票
   发表时间:2010-06-18  
帮助我解决了大问题,这个问题纠结了好长时间。呵呵 厉害!学习一下。
0 请登录后投票
   发表时间:2010-09-14  
去掉 dataType:"xml", 这样也是正常的

0 请登录后投票
   发表时间:2010-09-16  
Fetimber 写道
去掉 dataType:"xml", 这样也是正常的

去掉这个有时候也不行,你可以尝试在XML字符串最外围加入<xml>Your xml String</xml>,这样直接jQuery("<xml>Your xml String</xml>").find()就没有问题

 

0 请登录后投票
   发表时间:2010-10-14  
好厉害,有遇到过,但不知道那里是怎么解决的,
这个不错,收藏下
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics