【问题标题】:How do I print an array using jQuery from xml data?如何使用 jQuery 从 xml 数据打印数组?
【发布时间】:2013-03-28 03:42:27
【问题描述】:

我只是想从一个 XML 文件中打印一个 jQuery 数组。这是我的代码。正如您从 html 代码中看到的那样,我正在尝试打印 stockList。另外,我是否正确执行了 onBodyLoad?

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>

期望的输出:
谷歌
波音公司

【问题讨论】:

  • 您是否...尝试运行它?它看起来很合理,除了两个 .each() 调用不会做任何事情(它们所做的只是设置回调函数的本地变量),并且 stocklist = $(company); 行很奇怪,因为 company 包含 text() Company 元素,但它将被评估为选择器字符串。正如 Bhushan 所说,onload="onBodyLoad()" 是无效且不必要的。
  • :我找不到任何名为 onBodyLoad 的函数!!
  • 请发布 xml 代码和您想要的输出
  • 我添加了一些 xml 代码和给定代码所需的输出
  • 成功函数不也是命名为onBodyLoad吗?

标签: jquery html xml arrays onload


【解决方案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>');
            });
        }
    });
});

【讨论】:

  • 我需要弄清楚如何将元素存储在数组中,因为我需要对它们进行排序。一些看起来没用的东西就忽略了,那是因为我还没有接触到项目的那一部分。我目前只是尝试将公司存储在一个数组中,对它们进行排序(我知道该怎么做),然后打印它们。
  • 出于某种原因,我仍然没有得到任何输出。你拥有的一切看起来都是合法的,对我来说很有意义。也许我的设置有问题,我会调查一下。一旦它工作,我会给你支票!
【解决方案2】:

像这样修改你的代码:

<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>');
        });

        }
    });
});

【讨论】:

  • 我需要它在一个数组中,因为它需要按字母顺序排序。如果数组打印,我知道如何按字母顺序排序。
  • @swerley 您可能应该在问题中提到这一点
猜你喜欢
  • 2021-03-28
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-15
  • 2011-09-25
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多