代码之家  ›  专栏  ›  技术社区  ›  Damo

IE8中的jqueryxml解析

  •  1
  • Damo  · 技术社区  · 15 年前

    我在jQuery中解析了一些XML。

    <payload>
        <value key="VehicleMake">
            <value key="description">Aeon</value>
            <value key="code">18</value>
        </value>
        <value key="VehicleMake">
            <value key="description">Alfa Romeo</value>
    
            <value key="code">120</value>
        </value>
    </payload>
    

    在除IE(特别是IE8)以外的所有浏览器中,以下功能都起作用:

    $.ajax({
        type : "GET",
        async : false,
        url : "/services/vehiclemake",
        success :
            function(xmlResponse) {
            var data = $("payload", xmlResponse).children("value").map(function() {     
                //IE8 fails on the next line
                var code = $(this).children("value [key='code']").text();
                var desc = $(this).children("value [key='description']").text();
                return {
                    value : desc,
                    vehicleCode  : code,
                    label : desc
                };
            }).get();
        }
    });
    

    $.ajax({
        type : "GET",
        async : false,
        url : "/services/vehiclemake",
        success :
            function(xmlResponse) {
            var data = $("payload", xmlResponse).children("value").map(function() {
                var code;
                var desc;           
                var elements = $(this).children();
                for (i = 0; i < elements.length; i++) {
                    if(elements[i].attributes.getNamedItem("key").value == 'code') {
                        code = elements[i].text;
                    }
                    if(elements[i].attributes.getNamedItem("key").value == 'description') {
                        desc = elements[i].text;
                    }
                }
                var desc = $(this).children("value [key='description']").text();
                return {
                    value : desc,
                    vehicleCode  : code,
                    label : desc
                };
            }).get();
    

    有人能告诉我为什么标准jQuery属性选择器在IE8中不起作用吗?返回的XML具有正确的mime类型。

    谢谢。

    1 回复  |  直到 15 年前
        1
  •  2
  •   Codesleuth    15 年前

    .children("value[key='code']")
    

    可能解决不了,但我认为这需要修复。