Синтаксический анализ jQuery XML в IE8 - PullRequest
1 голос
/ 31 августа 2010

У меня есть какой-то XML, который я анализирую в 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), работает следующее:

$.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 происходит сбой при назначении «code», говоря: «TypeError: Object hasn»не поддерживает это свойство или метод ".

Если я использую этот подход, то это нормально:

$.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 Ответ

2 голосов
/ 31 августа 2010

Не думаю, что вам нужен пробел здесь:

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

Возможно, это не решит проблему, но я думаю, что это все равно нужно исправить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...