在页面加载后,我一直试图通过jquery修改api调用来加载,其他人已帮助我,但无法让它工作。它是在PHP中加载的,我不确定语法是否正确。
http://staging3.cryptocritix.com - 看看ICO最近的交易小部件
<?php
$args = array(
'include' => "47,54,62,56,50,64,65",
'max' => 10
);
if ( bp_has_groups( $args) ) :
while ( bp_groups() ) : bp_the_group();
?>
<li>
<?php
$cmc_id = $setting['cmc_ticker'];
$json_url = 'https://api.coinmarketcap.com/v2/ticker/'.$cmc_id.'/';
?>
<script>
$(document).ready(function() {
$.ajax({
url: '<?php echo $json_url ?>',
dataType: 'json',
success: function(data) {
let ico_roi = data.price;
let div = document.createElement('div');
$(div).html(ico_roi);
console.log(ico_roi);
$('#price-showing-after-page-load').html(div);
}
});
});
</script>
</li>
json url返回;
{
"data": {
"id": 1,
"name": "Bitcoin",
"symbol": "BTC",
"website_slug": "bitcoin",
"rank": 1,
"circulating_supply": 17244475.0,
"total_supply": 17244475.0,
"max_supply": 21000000.0,
"quotes": {
"USD": {
"price": 7185.30010797,
"volume_24h": 4157028720.19653,
"market_cap": 123906728079.0,
"percent_change_1h": -0.06,
"percent_change_24h": 2.22,
"percent_change_7d": 6.79
}
},
"last_updated": 1535841206
},
"metadata": {
"timestamp": 1535840724,
"error": null
}
}
感谢包含数据的更新。
问题很简单 - price
位于“data” - >“quotes” - >“USD”对象的子属性中。它是3层,它不是对象根的直接子。通过查看JSON的结构,您可以清楚地看到这一点。我假设当您在PHP中使用此代码时,您必须在结构中的相同位置访问“price”。
这是一个有效的演示:
$(document).ready(function() {
$.ajax({
url: 'https://api.coinmarketcap.com/v2/ticker/1/',
dataType: 'json',
success: function(response) {
$('#price-showing-after-page-load').html(response.data.quotes.USD.price);
}
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="price-showing-after-page-load">
</div>
注:我已将根对象重命名为“响应”,以便将其与“数据”区分开来,“数据”是该对象的属性。
我也简化了一点 - 除非你有一些CSS来改变它的风格,所以真的没有必要创建一个新的div只是为了保持价格值。在我的代码中,我将它直接插入到现有的div中。