1

我的页面上有这个 HTML 表,我想用来自这个 JSON URL 的数据动态填充它:http ://services.runescape.com/m=itemdb_rs/api/catalogue/detail.json?item=1055

老实说,我不知道最好的方法,但从我发现 JSON 模板似乎是我应该使用的。我发现使用 Javascript 帮助转换 JSON 数据的“Pure.js”( http://beebole.com/pure/ )和“Mustache.js”(https://github.com/janl/mustache.js)到 HTML。我不知道如何使用这些从 URL 加载数据,示例都使用静态字符串。我可以/我应该使用 AJAX、jQuery 吗?JSON url 中的数据每天都在变化。

我在下面带有 {...} 的 HTML 中的位置是我希望将来自 url 的数据加载到的位置。

如果有人能指出我如何做到这一点,并希望为我提供一个代码示例来帮助我完成这项工作,我将不胜感激。

<div class="item-details">
<div>
<h5>
{item.name}
</h5>
<p>Aaaarrrghhh ... I'm a monster.</p></div>
<h6>Pricing Information:</h6>
<table>
<tbody>
<tr>
<th>Current guide price:</th>
<td>{item.current.price}</td>
</tr>
<tr>
<th>Today's Change:</th>
<td class="{item.today.trend}">{item.today.price}</td>
</tr>
</tbody>
<tr>
<th>30 Day Change:</th>
<td class="{item.day30.trend}">{item.day30.change}</td>
</tr>
<tr>
<th>90 Day Change:</th>
<td class="{item.day30.trend}">{item.day90.change}</td>
</tr>
<tr>
<th>180 Day Change:</th>
<td  class="{item.day30.trend}">{item.day180.change}</td>
</tr>
</table>
</div>
</div>
4

2 回答 2

0

Distal 页面http://code.google.com/p/distal上的演示似乎实现了您在上面尝试做的事情。

于 2012-02-13T07:03:56.880 回答
0

我不确定您是否仍在寻找示例。如果是这样,有一个适合你。

pure.js作为jQuery插件工作,因此您可以使用jQuery ajax函数从http://services.runescape.com/....

$(function(){
    var directives = {
        'h5' : 'item.name',
        'td.currentPrice' : 'item.current.price',
        'td.currentPrice@class' : function() {return "";},
        'td.todayTrend' : 'item.today.price',
        'td.todayTrend@class' : 'item.today.trend',
        'td.day30Trend' : 'item.day30.change',
        'td.day30Trend@class' : 'item.day30.trend',
        'td.day90Trend' : 'item.day90.change',
        'td.day90Trend@class' : 'item.day90.trend',
        'td.day180Trend' : 'item.day180.change',
        'td.day180Trend@class' : 'item.day180.trend'
    };

    $.ajax({
        url: 'http://services.runescape.com/m=itemdb_rs/api/catalogue/detail.json?item=1055',
        dataType: 'jsonp',
        success: function(data) {
            $('div.item-details').render(jsonData, directives);
        }
    });
});

pure.js如果您的 JSON 文档的结构没有改变,指令将正常工作。目前情况如下:

{"item":{"icon":"...","icon_large":"...","id":1055,"type":"...","typeIcon":"...","name":"...","description":"...","current":{"trend":"neutral","price":"131.2m"},"today":{"trend":"positive","price":"+1.1m"},"day30":{"trend":"positive","change":"+11.0%"},"day90":{"trend":"positive","change":"+14.0%"},"day180":{"trend":"positive","change":"+32.0%"},"members":"false"}}

我还对您的 HTML 模板进行了一些小改动,以简化 pure.js 指令模型。请记住,最终的 HTML 应该看起来像预期的那样。

<div class="item-details">
  <div>
    <h5>{item.name}</h5>
    <p>Aaaarrrghhh ... I'm a monster.</p>
  </div>
  <h6>Pricing Information:</h6>
  <table>
    <tbody>
      <tr>
        <th>Current guide price:</th>
        <td class="currentPrice">{item.current.price}</td>
      </tr>
      <tr>
        <th>Today's Change:</th>
        <td class="todayTrend">{item.today.price}</td>
      </tr>
    </tbody>
    <tr>
      <th>30 Day Change:</th>
      <td class="day30Trend">{item.day30.change}</td>
    </tr>
    <tr>
      <th>90 Day Change:</th>
      <td class="day90Trend">{item.day90.change}</td>
    </tr>
    <tr>
      <th>180 Day Change:</th>
      <td class="day180Trend">{item.day180.change}</td>
    </tr>
  </table>
</div>
于 2013-01-21T12:47:59.213 回答