2016-08-01 5 views
0

Мне пришлось исправить этот вопрос, потому что я забыл фрагмент кода, который нарушает вещи. Я только хочу посмотреть на изображения для определенной церкви.Получение атрибута дочерних узлов xml в jQuery

XML файл:

<churches> 
<church> 
     <data-name>germanevangelical</data-name> 
     <name>German Evangelical</name> 
     <address>501 Elm St.</address> 
     <opened>1887</opened> 
     <neighborhood>East</neighborhood> 
     <region>East</region> 
     <architecture>Gothic</architecture> 
     <denomination>Evangelical Lutheran</denomination> 
     <closed>2006</closed> 
     <image caption="Mary Smith">image_1_forweb.jpg</image> 
     <image caption="Mary Smith">image_2_forweb.jpg</image> 
     <image caption="Mary Smith">image_3_forweb.jpg</image> 
</church> 
... (more church nodes) 
</churches> 

Я хочу, чтобы получить доступ к подписи изображений с JQuery.

Вот мой код, но это возвращение «не определено» для подписи:

var cName = 'germanevangelical'; 
$.ajax({ 
       type: "GET", 
       url: "churchdata.xml", 
       dataType: "xml", 
       success: function(xml) { 
       var name = $(xml).find("data-name"); //get church names from xml file 
       $(name).each(function(id, item) { 
        if ($(item).text() == cName) { //find the right church in the xml file 
         $(item).parent().find("image").each(function(id, node) { 
          console.log('id: ' + $(node).attr('caption'));//undefined 
         }) 
        }//end if right church in xml file 
       }) 
       } 
      }); 

Может кто-нибудь увидеть, что я делаю неправильно, пожалуйста?

+0

ли 'xml' уже разобрано как' # document' где 'dataType' устанавливается в' xml'? Также отсутствует закрытие ')' at '.each()' – guest271314

+0

ОК, я идиот. У меня не было атрибутов, написанных для церкви, которую я продолжал щелкать. У меня были атрибуты для церкви над ней. Ошибка человека не может быть недооценена .... – LauraNMS

ответ

0

Ошибка в вашем ajax-коде при анализе, используйте $ xml вместо $ (xml) при поиске "data-name". Пожалуйста, проверьте код ниже. Попробуйте запустить страницу в хроме и проверьте, есть ли какие-либо ошибки в инструментах разработчика, если есть какие-либо ошибки, которые не будут работать.

var cName = 'germanevangelical'; 
$.ajax({ 
type: "GET", 
    url: "churchdata.xml", 
    dataType: "xml", 
    success: function (xml) { 
    var xmlDoc = $.parseXML(xml), 
    $xml = $(xmlDoc); 
    var name = $xml.find("data-name"); //get church names from xml file 
     $(name).each(function(id,item) { 
       if ($(item).text() == cName) { 
       $(item).parent().find("image").each(function(id,node) { 
        console.log('id: ' + $(node).attr('caption')); //undefined 
       }); 
       } 
     }); 
     } 
}); 
+0

Это не повлияло на результаты, но спасибо. – LauraNMS

+0

Можете ли вы попробовать скопировать код моего кода и попробовать .. в вашем коде также есть ошибки типа. – CNKR

+0

Ответ над вашим работал, но когда я добавил код, чтобы узнать, соответствует ли имя церкви переменной, я больше не мог обращаться к атрибутам «изображения». – LauraNMS

0

$.parseXML() не является необходимым, где dataType на $.ajax() установлен в "xml"XMLDocument должен быть возвращен как xml на success из $.ajax() вызова.

Примечание также, отсутствует закрытие ) по телефону .each() по телефону javascript на вопрос.

$.ajax({ 
    type: "GET", 
    url: "churchdata.xml", 
    dataType: "xml", 
    success: function(xml) { 
    console.log(xml); 
    var name = $(xml).find("data-name"); //get church names from xml file 
    $(name).each(function(id, item) { 
     $(item).parent().find("image").each(function(id, node) { 
     console.log('id: ' + $(node).attr('caption')); 
     }) 
    }) 
    } 
}); 

plnkr http://plnkr.co/edit/HYaaxN0EY0JtkciBMJpl?p=preview

+0

Это сработало, пока я не включил свой код, чтобы проверить, соответствует ли церковь моей переменной (см. Выше). Теперь атрибуты не возвращаются. Любая идея, почему, пожалуйста? – LauraNMS

+0

@LauraNMS _ «Это сработало до тех пор, пока я не включил свой код, чтобы проверить, соответствует ли церковь моей переменной (см. Выше). Теперь атрибуты не возвращаются. Любая идея, почему бы вам понравиться?» _ Можете ли вы использовать fork plnkr для демонстрации? Появляется, чтобы вернуть ожидаемый результат в версии 2 из plnkr – guest271314

+0

Проблема заключалась в том, что я не помещал титры в этот узел моего xml! Глупая человеческая ошибка. Спасибо за помощь! – LauraNMS

Смежные вопросы