2011-06-07 198 views
1

這很可能最終是一個簡單的修復,所以我會提前道歉,因爲浪費你的時間。 我有以下代碼:jquery ajax問題

$.ajax({ 
      url: "/room/" + $nodeid + "/rss.xml", 
      dataType: "xml", 
      success: function($xml){ 
       $($xml).find('node').each(
        function(){ 
         alert($(this).attr('name')); 

        } 
       ); 
      }, 
      failure: function(){ 
       alert('Ajax not responding!'); 
      } 
     }); 

,我試圖閱讀以下XML:

<?xml version="1.0" encoding="UTF-8" ?><xml> 
    <node> 
    <Title name = 'Title'>Committtee Room 1</Title> 
    <Theatre name = 'Theatre'>40</Theatre> 
    <Classroom name = 'Classroom'>24</Classroom> 
    <Boardroom name = 'Boardroom'>22</Boardroom> 
    <Cabaret name = 'Cabaret'>24</Cabaret> 

    </node> 
</xml> 

可有人請賜教,告訴我爲什麼我的alert($(this).attr('name')); 沒有返回「標題」,「劇院「等

謝謝。

+1

沒有人能幫助,除非你告訴XML的樣子。 – 2011-06-07 16:46:18

+0

@TheSuperTramp正在嘗試修復它,但在iPhone上編輯是PITA ... – 2011-06-07 16:48:54

回答

5

您已經找到node元素。這不是name屬性。

你需要找到的node子元素,而不是:

$($xml).find('node > *').each(
1

你的XML應該是這樣的:

<?xml version="1.0" encoding="UTF-8" ?> 
<list> 
     <node> 
     <Title name='Title'>Committtee Room 1</Title> 
     <Theatre name='Theatre'>40</Theatre> 
     <Classroom name='Classroom'>24</Classroom> 
     <Boardroom name='Boardroom'>22</Boardroom> 
     <Cabaret name='Cabaret'>24</Cabaret> 
     </node> 
</list> 

對不起,我誤解你的代碼, 本教程可以幫助: http://think2loud.com/reading-xml-with-jquery/

+0

非常感謝您的洞察力。我會盡快研究你的所有建議 – sisko 2011-06-07 18:49:07

1

我同意lonesomeday,但你也可以嘗試尋找entiti每個節點都存在於現有節點中,這樣您仍然可以維護每個節點標記的循環結構。

$($xml).find('node').each(
       function(){ 
        alert($(this).children("Title").attr("name")); 
        // or put some conditional logic for the node like so 
        if ($(this).attr("awesome") == true) { 
         alert($(this).children("Title").attr("name")+" is awesome!"); 
        } 
       } 
      ); 
1

這個工作在一個小提琴:

$($xml).find('node').children().each(
       function(){ 
        alert($(this).attr('name')); 

       } 
      );