使用jQuery跨浏览器处理XML

时间:2009-09-08 16:12:18

标签: jquery cross-browser

我是jQuery的新手,并且我遇到了跨浏览器的不一致问题。我试图使用jQuery填充HTML下拉来解析XML文档。最后,我将使用HTTP调用交换XML文档,但是现在,我正在进行本地XML副本的GET。我的方法适用于Firefox(下拉列表中显示2个元素),但IE7并未根据需要处理XML。 IE7似乎根本不解析XML 这是我的片段:

<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
<script src="jquery-1.3.2.js"></script>

<title>test</title>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<script>

    $(document).ready(function() {
        $.ajax({
            type: "GET",
            url: "data.xml",
            dataType: ($.browser.msie) ? "text/xml" : "xml",
            success: function(xml) {
                var select = $('#aoi');
                $(xml).find('area').each(function() {
                    var name = $(this).find('name').text();
                    var type = $(this).find('type').text(); 
        //alert(name + " : " + type);
                    select.append("<option>" + name + " : " + type + "</option>");
                });
                select.children(":first").text("please make a selection").attr("selected", true);
            }
        });
    });

</script>

</head>
<body>
    <form id="form1" method="post" >
    <table border=".1" cellpadding="7" cellspacing="1" align="center" width="600" style="border-collapse: collapse;">

    <tr>
        <td>Shape</td>
        <td>
            <select id="aoi">
                <option>loading</option>
            </select>
        </td>
    </tr>
</table>

</form>

</body>
</html>

XML文件(data.xml)是:

<?xml version="1.0" encoding="ISO-8859-1"?>  
<areasofinterest>  
  <area id="1">  
    <id>1</id>  
    <name>square</name>  
    <type>UserDefined</type>  
  </area>  
  <area id="2">  
    <id>2</id>  
    <name>small square</name>  
    <type>UserDefined</type>  
  </area>  
</areasofinterest>  

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

我已经使用以下函数为IE加载xml。

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;
}




$(document).ready(function() {
        $.ajax({
            type: "GET",
            url: "data.xml",
            dataType: ($.browser.msie) ? "text/xml" : "xml",
            success: function(xml) {
                 *//call the function here and pass the xml document to it*
               var xml2=load_xml(xml);
                var select = $('#aoi');
                $(xml2).find('area').each(function() {
                    var name = $(this).find('name').text();
                    var type = $(this).find('type').text(); 
                //alert(name + " : " + type);
                    select.append("<option>" + name + " : " + type + "</option>");
                });
                select.children(":first").text("please make a selection").attr("selected", true);
            }
        });
    });

答案 1 :(得分:0)

您是否尝试将dataType: ($.browser.msie) ? "text/xml" : "xml",替换为dataType: "xml"

dataType是jQuery的提示......我在代码库中看不到使用text/xml的任何内容......无论浏览器是什么,它都应该是xml