`

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());
              });
        },
       error:function(data){
               alert("fail:");
       }
    });
});

分享到:
评论
7 楼 wf_wangfeng 2013-06-18  
帮了我一个大忙,请问你在哪学的这些东西啊,推荐一些资料呗
6 楼 yuzhi2217 2010-10-14  
好厉害,有遇到过,但不知道那里是怎么解决的,
这个不错,收藏下
5 楼 bulktree 2010-09-16  
<div class="quote_title">Fetimber 写道</div>
<div class="quote_div">去掉 dataType:"xml", 这样也是正常的<br><br>
</div>
<p>去掉这个有时候也不行,你可以尝试在XML字符串最外围加入&lt;xml&gt;Your xml String&lt;/xml&gt;,这样直接jQuery("&lt;xml&gt;Your xml String&lt;/xml&gt;").find()就没有问题</p>
<p> </p>
4 楼 Fetimber 2010-09-14  
去掉 dataType:"xml", 这样也是正常的

3 楼 jerry_lee 2010-06-18  
帮助我解决了大问题,这个问题纠结了好长时间。呵呵 厉害!学习一下。
2 楼 freshman008 2010-06-17  
楼上english厉害啊
我看到英文网站头就大,怎么弄啊
1 楼 godson_2003 2010-06-13  
怎么可能?

相关推荐

    兼容IE,firefox jquery 创建XML

    以下是一个兼容IE的解决方案: ```javascript function createXML(xmlString) { var xmlDoc; if (window.DOMParser) { xmlDoc = new DOMParser().parseFromString(xmlString, "text/xml"); } else { // IE ...

    使用jQuery.parseXML()时IE XML5633错误

    6. **更新或更换浏览器**:尽管这是一个技术解决方案,但提醒用户升级到较新的浏览器版本或者使用非IE浏览器,可以避免许多此类兼容性问题。 通过理解这个错误的本质和其产生的原因,我们可以采取相应的策略来优化...

    通过jQuery插件将JSP指定区域导出到WORD中(支持IE8)

    在本文中,我们将深入探讨如何使用jQuery插件将JSP中的指定区域导出到Word文档,并且这个解决方案特别针对IE8浏览器进行了优化。在开始之前,我们需要明白几个关键概念和技术。 1. **jQuery插件**:jQuery是一个...

    解决jquery .ajax 在IE下卡死问题的解决方法

    在Web开发中,jQuery的`.ajax`函数是异步数据交互的核心工具,它允许开发者通过HTTP请求获取并处理服务器端的数据。...在实际项目中,这种解决方案能够提高兼容性和用户体验,确保在不同浏览器环境下程序的稳定运行。

    IE中jquery.form中ajax提交没反应解决方法分享

    在这篇文章中,讨论了在使用jquery.form插件进行AJAX提交时,IE浏览器对某些响应头信息的处理可能与其他浏览器(如...如果问题依然存在,可能需要进一步调查IE内部处理AJAX请求的机制,或寻找其他的兼容性解决方案。

    JS + XML 联动菜单 支持IE、FireFox

    在这个案例中,JavaScript被用来动态地创建和更新菜单项,根据用户的操作加载并解析XML文件,展示相应的子菜单。"jquery-1.3.2.min.js" 是一个古老的jQuery库版本,jQuery是一个流行的JS库,它简化了DOM操作、事件...

    javascript在IE和Firefox中兼容性问题

    JavaScript是Web开发中不可或缺的一部分,尤其在处理动态交互和页面逻辑时。然而,由于不同的浏览器在实现JavaScript...对于开发过程中遇到的具体问题,开发者应参考相关文档,进行实际测试,以便找到最佳解决方案。

    jqueryupload上传控件

    jQueryUpload控件作为一个强大且易用的上传解决方案,深受开发者喜爱。本文将深入解析jQueryUpload的原理、配置及其实现方式,并探讨其在实际项目中的应用。 一、jQueryUpload概述 jQueryUpload是由Valums开发的一...

    jquery.form.js

    `jquery.form.js`是由Malsup开发的jQuery插件,其主要目标是提供一套完整的解决方案来处理HTML表单,包括异步提交(AJAX)、文件上传、表单验证等功能。这个插件与jQuery的核心库紧密结合,可以无缝地在现有的jQuery...

    jQuery常见问题及用法

    本文将深入探讨jQuery的常见问题及其解决方案,帮助开发者更好地理解和应用jQuery。 1. **IE浏览器下的动画闪烁问题** 在Internet Explorer中,有时动画效果可能会出现闪烁,这通常是因为缺少DOCTYPE定义导致的...

    jQuery在IE下使用未闭合的xml代码创建元素时的Bug介绍

    解决方案是确保在创建元素时总是使用自我闭合的标签,或者避免在IE6、7、8中使用未闭合的XML标签。由于这个问题已经在官方提交,并且在修复之前可能会影响代码的兼容性,开发人员应尽量遵循这个建议,或者使用条件...

    javascript+xml树形菜单

    然而,考虑到现代浏览器的兼容性和性能优化,建议使用更现代的技术栈,如 jQuery、Vanilla JS、React 或 Vue 等,它们提供了更强大、更跨平台的解决方案。同时,XML 虽然在某些场景下仍有应用,但在前端开发中已经...

    jquery 做的实时图表

    "jQuery 做的实时图表"是一个使用jQuery和Highcharts插件实现的动态图表解决方案,它允许开发者创建交互式、实时更新的图表,用于展示不断变化的数据。以下是关于这个主题的详细知识讲解。 ### Highcharts简介 ...

    VML中文参考手册解析

    VML(Vector Markup Language...总的来说,VML作为早期的矢量图形解决方案,虽然在IE环境中表现出色,但因其局限性,现在已被更广泛的SVG技术所替代。在现代Web开发中,了解SVG和其它跨浏览器的图形解决方案更为重要。

    Get中文乱码IE浏览器Get中文乱码解决方案

    在Tomcat的`conf/server.xml`文件中,你需要找到连接器(Connector)配置,增加`URIEncoding`属性并设置为`UTF-8`。例如: ```xml connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" /&gt; ``...

    JS读XML无限节点

    当XML包含无限节点层次时,递归函数是理想的解决方案。我们可以编写一个函数,接收当前节点作为参数,然后递归遍历其子节点,直到没有更多子节点为止。同时,记录每个节点的信息,如标签名、属性和值,为构建树形...

    被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用

    3. **没有安装MSXML**:MSXML是用于解析XML文档的组件,虽然与jQuery有关联,但通常不是加载jQuery脚本所必需的。 然而,经过一系列排查,包括更新jQuery库、检查JavaScript代码、调整IE安全设置等,问题的真正原因...

    兼容IE6的spring mvc框架

    **兼容IE6的挑战与解决方案:** 1. **CSS兼容性**:IE6对CSS2的解析存在很多问题,需要使用条件注释或者专门针对IE6的CSS hack来修复样式问题。 2. **JavaScript支持**:IE6对现代JavaScript语法的支持有限,需要...

    Jquery 返回json数据在IE浏览器中提示下载的问题

    在实施解决方案的过程中,需要注意的一点是,正确的字符集对于JSON数据的解析至关重要。如果服务器返回的数据编码和前端指定的字符集不一致,会导致解析错误。因此,在设置`Content-Type`时,必须确保`charset`参数...

    IE6的POST请求无data的的问题

    在“src”这个压缩包文件中,可能包含了用于重现问题或提供解决方案的源代码。分析这些代码可以帮助我们更深入地理解问题所在,找出修复方法。不过,由于具体的源代码内容未知,我们只能根据标题和描述来推测问题和...

Global site tag (gtag.js) - Google Analytics