You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法将jQuery获取的JSON数据存入变量并展示的问题

解决JSON价格存入变量并计算的问题

嘿,我一眼就看出你遇到的问题啦——AJAX请求的异步特性在搞鬼!咱们一步步拆解问题,然后搞定它~

问题根源

你写的$.get是异步请求,意思是浏览器会在后台发送请求拿数据,同时继续执行后面的代码。当你执行$('#tronpricefromvar').html(tronPrice);的时候,请求还没完成,tronPrice还是初始的undefined,自然显示不出来。另外,你之前尝试tronPrice = $("#tron").html(data[0].price_usd);也不对,因为html()方法设置内容后返回的是jQuery对象,不是你要的价格数值哦。

解决方案:把依赖数据的操作放到回调里

所有需要用到这个价格数据的逻辑,都得放到$.get的回调函数里——因为只有回调执行时,才确保咱们已经拿到了从API返回的JSON数据。

修改后的完整代码如下:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
var tronQty = 5000.00; // 持有的TRX数量
var tronPrice; // 存储价格的变量

$.get("https://api.coinmarketcap.com/v1/ticker/tron/", function(data, status) {
    // 直接从返回的JSON数据中提取价格,转成数字方便后续计算
    tronPrice = parseFloat(data[0].price_usd);
    
    // 更新页面上的价格展示
    $("#tron").html(tronPrice);
    
    // 用变量更新第二个容器的内容
    $('#tronpricefromvar').html(tronPrice);
    
    // 这里可以直接计算总价值啦!
    var totalValue = tronQty * tronPrice;
    console.log("你的TRX总价值(USD):" + totalValue.toFixed(2));
});
</script>
</head>
<body>
Tron <br>
Price: <div id="tron"></div> <br>
Price from var: <div id="tronpricefromvar"></div>
</body>
</html>

关键点说明

  • 异步回调的时机:回调函数会在API请求成功返回后执行,所以所有依赖tronPrice的操作(比如计算总价值、更新页面)都要放在这里面。
  • 数据类型转换:用parseFloat()把API返回的价格字符串转成数字,这样才能和tronQty做乘法运算。如果需要保留小数位数,可以用toFixed(2)之类的方法格式化。

可选:用更现代的异步语法(Async/Await)

如果你习惯更简洁的异步写法,也可以用async/await来处理jQuery的AJAX请求(jQuery的$.get返回的是Deferred对象,支持await):

<script>
var tronQty = 5000.00;
var tronPrice;

async function fetchTronPrice() {
    try {
        // 等待请求完成,拿到数据
        const data = await $.get("https://api.coinmarketcap.com/v1/ticker/tron/");
        tronPrice = parseFloat(data[0].price_usd);
        
        $("#tron").html(tronPrice);
        $('#tronpricefromvar').html(tronPrice);
        
        const totalValue = tronQty * tronPrice;
        console.log("你的TRX总价值(USD):" + totalValue.toFixed(2));
    } catch (err) {
        console.error("获取价格失败:", err);
    }
}

// 调用异步函数
fetchTronPrice();
</script>

这样写逻辑更线性,可读性更高,适合处理复杂的异步流程。

内容的提问来源于stack exchange,提问作者user1401561

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:28:30