【问题标题】:How to choose which XML variables ajax sends to html file?如何选择 ajax 发送到 html 文件的 XML 变量?
【发布时间】:2020-06-12 06:37:26
【问题描述】:

我有一个 XML 文档、一个 AJAX 脚本和一个 HTML 脚本。我想要传递给 HTML 的 XML 文件的某些值。我应该使用什么命令来完成以下操作:

XML 脚本:

    root>
  <coin>
    <trader variable="GLDAG_MAPLE">Gold.co.uk</trader>
    <metal>Silver</metal>
    <type>Maple</type>
    <price>£31.56</price>  **<--- THIS TO BE PASSED THROUGH TO: <td id="001">** 
  </coin>
  <coin>
    <trader variable="GLDAG_BRITANNIA">Gold.co.uk</trader>
    <metal>Silver</metal>
    <type>Britannia</type>
    <price>£32.4</price>  **<---- THIS TO BE PASSED THROUGH TO <td id="002">**
  </coin>

AJAX 脚本:

$(response)
    .find("coin")
    .each(function () {
      var _trader = "Trader: " + $(this).find("trader").text();
      console.log(_trader);

      var _metal = "Metal: " + $(this).find("metal").text();
      var _price = "Price: " + $(this).find("price").text();
      var _type = "Type: " + $(this).find("type").text();

      $("#001").text($(this).find('price').text());
      $("#002").text($(this).find('price').text());
      $("#003").text($(this).find('price').text());
      $("#004").text($(this).find('price').text());
      $("#005").text($(this).find('price').text());
      $("#006").text($(this).find('price').text());


      // add content to the HTML
      $("#001").append(_price);         **<--- currently passing through ALL price values**
      $("#002").append(_price);         **<--- also passing through ALL price values** 
    });

HTML 脚本:

  <tr>
    <td>**PRICES PLACED BELOW:**</td>
    <td id="001"></td>
    <td id="002"></td>
  </tr>

【问题讨论】:

    标签: javascript html jquery ajax xml


    【解决方案1】:

    您发布了无效的 XML - 重复的 xml 标记需要在容器标记中。我在示例中添加了&lt;root&gt;&lt;/root&gt;

    如果您不想在附加之前定义 TD:

    let  response = `<root>
    <coin>
      <trader variable="GLDAG_MAPLE">Gold.co.uk</trader>
      <metal>Silver</metal>
      <type>Maple</type>
      <price>£31.56</price>
    </coin>
    <coin>
      <trader variable="GLDAG_BRITANNIA">Gold.co.uk</trader>
      <metal>Silver</metal>
      <type>Britannia</type>
      <price>£32.4</price>
    </coin>
    </root>`;
    
    $table = $("table tbody");
    $row = $table.append("<tr/>")
    $(response)
        .find("coin")
        .each(function () {
          const _trader = "Trader: " + $(this).find("trader").text();
          console.log(_trader);
    
          var _metal = "Metal: " + $(this).find("metal").text();
          var _price = "Price: " + $(this).find("price").text();
          var _type = "Type: " + $(this).find("type").text();
          $row.append(`<td>${_price}</td>`)
        });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <table>
      <tbody>
        <tr>
          <td>**PRICES PLACED BELOW:**</td>
        </tr>
      </tbody>
    </table>

    如果你这样做了,那么

    const pad = num => ("00"+num).slice(-3);
    let response = `<root>
    <coin>
      <trader variable="GLDAG_MAPLE">Gold.co.uk</trader>
      <metal>Silver</metal>
      <type>Maple</type>
      <price>£31.56</price>
    </coin>
    <coin>
      <trader variable="GLDAG_BRITANNIA">Gold.co.uk</trader>
      <metal>Silver</metal>
      <type>Britannia</type>
      <price>£32.4</price>
    </coin>
    </root>`;
    
    $(response)
      .find("coin")
      .each(function(i,coin) {
        const _trader = "Trader: " + $(this).find("trader").text();
        console.log(_trader);
    
        var _metal = "Metal: " + $(this).find("metal").text();
        var _price = "Price: " + $(this).find("price").text();
        var _type = "Type: " + $(this).find("type").text();
        $("#coin"+pad(i)).text(_price)
      });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <table>
      <tbody>
        <tr>
          <td>**PRICES PLACED BELOW:**</td>
          <td id="coin000"></td>
          <td id="coin001"></td>
        </tr>
      </tbody>
    </table>

    【讨论】:

    • 如何修复无效的 XML。还有什么使它无效?
    • 我是怎么写的。你需要用“”包裹,因为你有不止一枚硬币。
    • 或者您发布的 XML 不完整 - 我看到了根> 并且 &lt;root&gt;&lt;coin&gt;&lt;/coin&gt;&lt;coin&gt;&lt;/coin&gt;&lt;/root&gt; 有效,所以将我的 更改为
    • 是的,我只发布了一半的 XML,因为其余的不是相关的。还有一种方法可以告诉 AJAX 在某些地方发布固定的硬币价格,因为我的问题是它们需要显示在页面的各个部分
    • 查看更新。您也许可以使用metal+type 作为 id?
    猜你喜欢
    • 2014-09-22
    • 2014-02-08
    • 2021-11-10
    • 1970-01-01
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 2016-09-10
    相关资源
    最近更新 更多