如何使用javascript()

时间:2017-05-27 07:29:41

标签: javascript php jquery ajax laravel

我有来自数据库的数据的html代码。我需要通过AJAX更新这些数据,这样用户就可以在不刷新页面的情况下获得新的货币汇率。这是Laravel刀片模板:

@foreach ($currencies as $currency)
    <div class="currency-{{ $currency->id }}">
        <div class="cur-id">{{ $currency->id }}</div>
        <div class="cur-name">{{ $currency->cur_name }}</div>
        <div class="cur-sell">{{ $currency->cur_sell + 0 }}</div>
        <div class="cur-buy">{{ $currency->cur_buy + 0 }}</div>
    </div>
@endforeach

一旦页面加载 - 它有实际数据,但1分钟后这个数据被刷新,所以我每分钟都会发出一个AJAX请求:

$.ajax({
    type: 'GET',
    url: '/ajax-currencies',
    dataType: 'json',
    success: function (data) {
        $.each(data, function(index, element) {
            $('.currency-+element.id+.cur-sell').text(element.cur_sell);
        });
    }
});

&#34; / Ajax的货币&#34;使用json对象的响应。如何将每个对象及其值放入正确的div - currency-1(具有自己的值),currency-2(具有自己的值)等,所以它看起来像这样:

<div class="currency-1">
  <div class="cur-id">1</div>
  <div class="cur-name">Bitcoin</div>
</div>

<div class="currency-2">
  <div class="cur-id">2</div>
  <div class="cur-name">Ethereum</div>
</div>

1 个答案:

答案 0 :(得分:1)

我不知道你为什么需要任何排序。如果你的div有特殊的类,那么你可以通过这些类找到div并直接在这些div中插入数据。您已经尝试过这样做,但不正确。您的each回调应为:

function(index, element) {
    $('.currency-' + element.id + ' .cur-sell').text(element.cur_sell);
    // alternative version     
    //$('.currency-' + element.id).find('.cur-sell').text(element.cur_sell);
}

请参阅,我将element.id移出了引用的字符串,因为javascript无法解析引用字符串中的变量。

我还在选择器的类之间添加了空格,因为像.class1.class2这样的选择器会尝试查找应用了两个类的项目,您不会这样做;想要。

另外,我使用find()方法添加了替代选择器。仅举例来说。

现在选择器应该选择正确的div。