2011-05-24 63 views
0

我有一个jQuery脚本,用于搜索生成XML文件的php文件。 XML文件的例子就是在这里JQuery的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文件中的每个名称和地址后面都有一个换行符的有序列表,但是我得到的是所有地址后跟的所有名称。我认为剧本正在通过一个循环,并且应做我想做的,但如果它有助于这是“显示”

阿斯科特RacecourseAston阿斯顿维拉足球ClubAsda 1年CelebrationASDA FULWOODASDA测试的价值,它只是不

5ASDA 50-BerkshireVilla ParkPark在IpswichASDA FULWOODASDA测试5ASDA 50

任何人都可以告诉我我做错了吗?

在此先感谢

米克

回答

3

这是becasue你做以下几点:

$(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>" ; 
})