Jquery Ajax с IE - PullRequest
       3

Jquery Ajax с IE

0 голосов
/ 20 марта 2012

Я работаю над парсингом некоторых xml через jquery ajax.У меня все работает хорошо во всех браузерах, за исключением IE.

Я сузил его до того места, где висит IE, и я не уверен, как это исправить.Я не могу сказать, если это проблема с jquery, который я использую, чтобы получить HTML, или это проблема с моим XML или это то, что я пропускаю.Интересно то, что когда я предупреждаю свою переменную, содержащую данные xml, IE корректно выводит всю информацию правильно, но кажется, что она не может обойти ее и правильно отформатировать данные.Пожалуйста, помогите.

Вот код, который я использую для извлечения данных из моего xml:

function parseXML (data) {
        $(data).find("section").each(function() {
            var $section = $(this),
                photos = $section.find("photo"),
                photoContainer = $("<div></div>", {
                    id: $section.attr("id"),
                    "class": "gallery-section"
                });

            photos.each(function() {

                var photo = $(this),
                    imageurl = photo.attr("imageurl"),
                    title = photo.find("title").text(),
                    description = photo.find("description").html(),
                    kind = photo.find("description").attr("type");
                icon = photo.find("icon").attr("source");
                iconClass = photo.find("icon").attr("class");

                var photoWrapper = $("<div class='photo'></div>"),
                    imageElem = $("<img />", {
                        "src": imageurl,
                        "class": "gallery-photo"
                    }),
                    photoInfo = $("<div></div>", {
                        "class": "photo-info " + kind
                    }),
                    iconInsert = $("<img />", {
                        "src": icon,
                        "class": iconClass
                    }),
                    header = $("<h1></h1>", {
                        text: title
                    }),
                    photoDescription = $("<div></div>", {
                        html: description
                    });

                photoInfo.append(iconInsert).append(header).append(photoDescription);
                photoWrapper.append(imageElem).append(photoInfo);
                photoContainer.append(photoWrapper);

            });
            $("#photo-viewer-inner").append(photoContainer);
        });
        var videos = "<div id='videos'></div>";
        $("#photo-viewer-inner").append(videos);
        $("#videos").load("images/gallery-images/videos.html #video-inner");
    }

/* Get Photos From XML */
var dataType;
if ($.browser.msie) {
    dataType = "text";
} else {
    dataType = "html";
}

$.ajax({
    type: "GET",
    url: "images/gallery-images/gallery-images.xml",
    dataType: dataType,
    success: function( data, status )
{
  parseXML( data );
  alert(data);
},
});

Ответы [ 2 ]

0 голосов
/ 20 марта 2012

JavaScript в IE не позволяет использовать class в качестве имени переменной или свойства, как это делают другие браузеры.Эта ссылка содержит несколько интересных комментариев bugzilla.mozilla , похоже, что IE прав ОДИН РАЗ.

0 голосов
/ 20 марта 2012

В вашем вызове AJAX удалите запятую из функции.

Измените это:

$.ajax({
    type: "GET",
    url: "images/gallery-images/gallery-images.xml",
    dataType: dataType,
    success: function( data, status )
    {
        parseXML( data );
        alert(data);
    },
});

на следующее:

$.ajax({
    type: "GET",
    url: "images/gallery-images/gallery-images.xml",
    dataType: dataType,
    success: function( data, status )
    {
        parseXML( data );
        alert(data);
    }
});

Цитирование еще одного сообщения SO:

"При создании объекта {} или массива [] отдельные элементы разделяются запятой. Но здесь есть дополнительная запятая после последнего элемента, например [a, b, c,]- это не разрешено согласно ECMA-262. "

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