2011-05-24 61 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>" ; 
})