zoukankan      html  css  js  c++  java
  • ie中jQuery无法解析xml文件的解决方案

    功能描述:使用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());
                  });
            },  
                   alert("fail:");
           }
        });
    });

    转自:http://imyself.iteye.com/blog/691167

  • 相关阅读:
    使用JFileChooser实现在指定文件夹下批量添加根据“数字型样式”或“非数字型样式”命令的文件夹
    51Nod 1376 最长递增子序列的数量 (DP+BIT)
    POJ 2728 Desert King (最优比率树)
    UVa 11280 Flying to Fredericton (DP + Dijkstra)
    UVa 11367 Full Tank? (DP + Dijkstra)
    UVa 10269 Adventure of Super Mario (Floyd + DP + BFS)
    UVaLive 4452 The Ministers' Major Mess (TwoSat)
    UVa 11294 Wedding (TwoSat)
    HDU 3247 Resource Archiver (AC自动机+BFS+状压DP)
    HDU 5957 Query on a graph (拓扑 + bfs序 + 树剖 + 线段树)
  • 原文地址:https://www.cnblogs.com/suzh/p/2528477.html
Copyright © 2011-2022 走看看