2016-08-01 163 views
0

我不得不修改这个问题,因为我遗漏了一段破坏事物的代码。我只想看看某个教会的图像。在jQuery中获取xml子节点的属性

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

是'已经被解析为其中'dataType'设置为''xml'#document' xml'?在'.each()'' – guest271314

+0

还缺少关闭')'好的,我是个白痴。我没有为我继续点击的教堂写的属性。我有上面教堂的属性。人为错误不容小觑...... – LauraNMS

回答

0

解析时,在您的ajax代码中存在一个非常小的错误,在找到“数据名称”时使用$ xml而不是$(xml)。请检查下面的代码..尝试使用chrome运行你的页面,并检查开发人员工具是否有任何错误,如果有任何错误它不会工作。

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$.ajax()通话success返回为xml

还请注意,错过关闭).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 _“这工作,直到我把我的代码,看看教会是否符合我的变量(见上文),现在属性没有被返回,任何想法为什么请?”_你可以叉plnkr来演示?似乎在版本2返回预期结果plnkr – guest271314

+0

问题是我没有在我的xml的节点中放置标题!愚蠢的人为错误。感谢您的帮助! – LauraNMS