2012-03-16 2 views
0

Я искал высоко и низко в Интернете для ответа на этот вопрос, и я думаю, что есть что-то, чего я не вижу. Я читаю в галерее фотографий из XML-документа через jquery $ .ajax(), и у меня возникают проблемы с IE7. Функция, которую я использую, отлично работает во всех других браузерах, которые я тестировал.

Я прочитал тон на настройке правильного типа данныхType и contentType для IE, но я начинаю сомневаться в том, является ли это проблемой. Я пробовал тонну комбинаций разных типов данных и типов контента, и ни один из них, похоже, не делает этого. Мне интересно, может ли быть проблема с моим xml или с тем, как моя функция читает xml, потому что, когда функция задана так, как она есть сейчас, все проходит в IE7, но ни одно из изображений не добавляется в DOM ,

var dataType; 
if ($.browser.msie) { dataType = 'text' } else { dataType = 'html' }; 

$.ajax({ 
    type: 'GET', 
    url: 'images/gallery-images/gallery-images.xml', 
    dataType: dataType, 
    success: function(parseXML){ 

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

Это код, который я использую для извлечения данных из моего xml. Как я уже сказал, все, включая это и все после этого, похоже, отлично работает в IE7, но изображения никогда не загружаются.

Я в тупике, надеюсь найти здесь помощь.

+0

- это теги изображений в источнике html? – kclair

+0

Пройдите свою собственную отладку. Используйте консоль сценария, или если вы не можете этого сделать, 'alert()' интересные вещи, чтобы увидеть, что на самом деле делает код. В первую очередь, перехватывание исключений в вызове ajax может дать вам интересные идеи. – tdammers

+0

его работы прямо в других браузерах? IE7 отстой. Я не знаю, поможет ли вам это, но один год около года назад мой аякс не работал в IE7, потому что вместо сильного я использовал устаревший жирный тег. Не знаю, почему это сломало это, а просто предложение. – Rooster

ответ

0

Там нет ничего я признаю, как IE7-рычание, но вот несколько предложений:

  • Классов - Попробуйте установить классы с class="..." или .addClass('...') в отличие от опоры на карте, например. photoInfo = $('<div class="photo-info"></div>').addClass(kind).
  • Объявление - icon и iconClass оба отсутствует var (предыдущая строки заканчивается точкой с запятой).
  • Duplicate ids? - Избегайте, возможно, дублированного идентификатора в div видео с помощью, например. var videos = $('<div></div>').appendTo($('#photo-viewer-inner')).load('images/gallery-images/videos.html#video-inner');. Обратите внимание, что я удалил пробел из URL-адреса.
Смежные вопросы