2011-06-07 162 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')); 

       } 
      );