Jquery XML结果与预期不符

时间:2011-05-24 19:31:09

标签: php jquery ajax

我有一个jquery脚本,用于搜索生成XML文件的php文件。 XML文件示例在这里

            <sites>
            <name>Ascot Racecourse</name>
            <address1>Berkshire</address1>
            <postcode>SL5 7JX</postcode>
            <name>Aston Villa Football Club</name>
            <address1>Villa Park</address1>
            <postcode>B6 6HE</postcode>
            <name>Asda 1 Year Celebration</name>
            <address1>Park In Ipswich</address1>
            <postcode>IP</postcode>
            <name>ASDA FULWOOD</name>
            <address1>ASDA FULWOOD</address1>
            <postcode>ASDA</postcode>
            <name>ASDA TEST 5</name>
            <address1>ASDA TEST 5</address1>
            <postcode>ASDA TES</postcode>
            <name>ASDA 50</name>
            <address1>ASDA 50</address1>
            <postcode>ASDA 50</postcode>
            </sites>

我的JQ脚本运行正常,并使用以下

获取所有数据
          $(document).ready(function(){ 
          $.ajax({
          type: "GET", 
          url: "search_action.php" + string ,
          dataType: "xml",
          success: disxml                                                  });
            })

       } // function 

      function disxml(data){

      $(data).find('sites').each(function(row) {  
                  var name    = $(this).find('name').text(); 
                  var add1    = $(this).find('address1').text(); 

                  display +=   "<b>" + name + "</b> - " + add1  + "<br>"   ;


                  })

      divbox.html(display) ; // draw contents 
      } 

我很高兴在浏览器中检查XML文件,结果很好但是问题是变量'display'的值我希望在xml文件中的每个名称和地址后面有一个换行符的有序列表,但我得到的是所有地址后跟的所有名称。我相信脚本正在通过一个循环,应该做我想要的但它只是没有

如果它有助于这是'display'的值

Ascot RacecourseAston Villa Football ClubAsda 1年CelebrationASDA FULWOODASDA TEST 5ASDA 50-BerkshireVilla ParkPark in IpswichASDA FULWOODASDA TEST 5ASDA 50

有人能告诉我,我做错了吗?

提前致谢

米克

1 个答案:

答案 0 :(得分:3)

这是因为你正在做以下事情:

$(data).find('sites').each(function(row) {  
   var name    = $(this).find('name').text(); 
   var add1    = $(this).find('address1').text(); 

   display +=   "<b>" + name + "</b> - " + add1  + "<br>"   ;
})

您正在遍历每个sites节点,其中有一个节点,并在其中获取所有名称节点,然后获取所有这些节点的文本。为了使它像你期望的那样工作,你必须修改你的XML:

<sites>
   <site>
      <name>Ascot Racecourse</name>
            <address1>Berkshire</address1>
            <postcode>SL5 7JX</postcode>
   </site>
   <site>
      <name>Aston Villa Football Club</name>
            <address1>Villa Park</address1>
            <postcode>B6 6HE</postcode>
   </site>
   <!-- etc... -->
</sites>

并执行以下操作:

$(data).find('sites').find('site').each(function(row) {  
   var name    = $(this).find('name').text(); 
   var add1    = $(this).find('address1').text(); 

   display +=   "<b>" + name + "</b> - " + add1  + "<br>"   ;
})