2016-08-01 157 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