2013-03-28 34 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