2013-03-28 65 views
-1

我只是想從XML文件中打印一個jQuery數組。這是我的代碼。我試圖從html代碼中看到打印stockList。另外,我是否正確地做了onBodyLoad?如何從xml數據使用jQuery打印數組?

HTML:

<body onload="onBodyLoad()"> 
     <div id="stockList"></div> 
     <br /> 
     <br /> 
     <br /> 
     <div id="stockInfo"></div> 
    </body> 

的jQuery:

$(document).ready(function() { 
    $.ajax({ 
     type: "GET", 
     url: "stocks.xml", 
     dataType: "xml", 
     success: function (onBodyLoad) { 
      var stocklist = new Array(); 
      var stockinfo = new Array(); 
      $(onBodyLoad).find('Stock').each(function() { 
       var company = $(this).find('Company').text(); 
       var market = $(this).find('Market').text(); 
       var sector = $(this).find('Sector').text(); 
       var price = $(this).find('Price').text(); 
       $(onBodyLoad).find('YearRange').each(function() { 
        var low = $(this).find('Low').text(); 
        var high = $(this).find('High').text(); 
       }); 
       $(onBodyLoad).find('Dividend').each(function() { 
        var amount = $(this).find('Amount').text(); 
        var yieldx = $(this).find('Yield').text(); 
        var frequency = $(this).find('Frequency').text(); 
       }); 
       stocklist = $(company); 
       $('#stockList').append('<div><p>' + stocklist + '</p></div'); 
      }); 
     } 
    }); 
}); 

XML:

<Stock symbol="GOOG"> 
    <Company>Google</Company> 
    <Market>NASDAQ</Market> 
    <Sector>Software</Sector> 
    <Price>$487.80</Price> 
    <YearRange> 
     <Low>$331.55</Low> 
     <High>$488.50</High> 
    </YearRange> 
    <Dividend available="false"/> 
</Stock> 
<Stock symbol="BA"> 
    <Company>Boeing Company</Company> 
    <Market>NYSE</Market> 
    <Sector>Aerospace</Sector> 
    <Price>$79.05</Price> 
    <YearRange> 
     <Low>$63.70</Low> 
     <High>$89.58</High> 
    </YearRange> 
    <Dividend available="true"> 
     <Amount>$1.20</Amount> 
     <Yield>$1.50</Yield> 
     <Frequency>QTR</Frequency> 
    </Dividend> 
</Stock> 

所需的輸出:
谷歌
波音公司

+0

難道你.. 。試試運行它?除了兩個'.each()'調用不會做任何事情(他們所做的只是設置變量對回調函數是本地的),並且行'stocklist = $(company);'是很奇怪的因爲'company'包含'Company'元素的'text()',但它將被評估爲一個選擇器字符串。正如Bhushan所說,「onload =」onBodyLoad()「'是無效的和不必要的。 – tcovo 2013-03-28 03:58:31

+0

:我找不到任何名爲onBodyLoad的函數! – Sharun 2013-03-28 03:59:32

+0

Plz發佈xml代碼和您想要的輸出 – Sharun 2013-03-28 04:02:18

回答

1

爲了收集該公司的名字,對它們進行排序,並打印出來:

$(document).ready(function() { 
    $.ajax({ 
     type: "GET", 
     url: "stocks.xml", 
     dataType: "xml", 
     success: function (xmlData) { 
      var companyNames = []; 
      $(xmlData).find('Stock').each(function() { 
       var company = $(this).find('Company').text(); 
       companyNames.push(company); 
      }); 
      companyNames.sort(); 
      $.each(companyNames, function (index, name) { 
       $('#stockList').append('<div><p>' + name + '</p></div>'); 
      }); 
     } 
    }); 
}); 
+0

我需要弄清楚如何將元素存儲在數組中,因爲我需要對它們進行排序。一些似乎毫無用處的東西只是忽略了,這是因爲我還沒有達到該項目的那部分。我目前只是試圖將這些公司存儲在一個數組中,對它們進行排序(我知道該怎麼做),然後將它們打印出來。 – swerley 2013-03-28 04:26:01

+0

好的,編輯答案 – tcovo 2013-03-28 04:31:09

+0

出於某種原因,我仍然沒有輸出。你擁有的一切看起來都合法,對我來說很合理。也許我的設置有問題,我會研究它。一旦它工作,我會給你支票! – swerley 2013-03-28 04:40:34

0

修改你的代碼是這樣的:

<body> 
     <div id="stockList"></div> 

    </body> 

腳本:

$(document).ready(function() { 
    $.ajax({ 
     type: "GET", 
     url: "stocks.xml", 
     dataType: "xml", 
     success: function(xml){ 
     var newArray = []; 
      $(xml).find('Stock').each(function() { 
       var company = $(this).find('Company').text(); 

       newArray.push(company); 


      }); 

      newArray.sort(); 

      $(companyNames).each(function (index, name) { 
      $('#stockList').append('<div><p>' + name + '</p></div>'); 
     }); 

     } 
    }); 
}); 
+0

我需要它在一個數組中,因爲它需要按字母順序排序。我知道如何按字母順序排序數組是否打印。 – swerley 2013-03-28 04:22:26

+0

@swerley您應該提到在 – tcovo 2013-03-28 04:24:24

+0

@swerly問題:請參閱更新的答案 – Sharun 2013-03-28 04:25:53