IE8中的jQuery XML解析 [英] jQuery XML parsing in IE8

查看:114
本文介绍了IE8中的jQuery XML解析的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些要在jQuery中解析的XML.

I have some XML that I am parsing in jQuery.

<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)以外的所有浏览器中,以下工作正常:

In all browsers except IE (specifically IE8) the following works:

$.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();
    }
});

在IE8中,它在分配给代码"时失败:"TypeError:对象不支持此属性或方法".

In IE8 it fails on the assignment to 'code' saying : "TypeError: Object doesn't support this property or method".

如果我使用这种方法,那很好:

If I use this approach then it is fine:

$.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类型.

Can anyone tell me why the standard jQuery attribute selectors are not working in IE8? The XML is being returned with the correct mime type.

谢谢.

推荐答案

我不认为您要在此处留空格:

I don't think you want a space here:

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

可能无法解决,但我认为仍然需要修复.

Might not solve it but I think that needs fixing anyway.

这篇关于IE8中的jQuery XML解析的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆