我有来自数据库的数据的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>
答案 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。