在jquery中将两个json值相加

时间:2018-05-10 18:14:37

标签: jquery json

我正在使用以下内容从json中获取数据。

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

<script>
$.getJSON("https://www.chain.so/api/v2/address/DOGE/DK1i69bM3M3GutjmHBTf7HLjT5o3naWBEk", function(data)

{$('#donation_pot_1').text(data.data.received_value);
});

$.getJSON("https://www.chain.so/api/v2/address/DOGE/DLztFgLx33AMMiWFvLkbwy3cDdiuE9ZTrS", function(data) {
$('#donation_pot_2').text(data.data.received_value);
});
</script>

然后在div中显示数据:

<div id="donation_pot_1"></div>
<div id="donation_pot_2"></div>

我想将这两个值加在一起(如果可能的话,删除小数点后面的数字)我不知道从哪里开始。 任何帮助是极大的赞赏。

2 个答案:

答案 0 :(得分:2)

你可以通过链接Jonathan Lam在他的回答中所说的请求来实现,你可以使用parseInt方法删除像这样的小数值

$.getJSON("https://www.chain.so/api/v2/address/DOGE/DK1i69bM3M3GutjmHBTf7HLjT5o3naWBEk", function(data1) {
  $.getJSON("https://www.chain.so/api/v2/address/DOGE/DLztFgLx33AMMiWFvLkbwy3cDdiuE9ZTrS", function(data2) {
    var combinedText = parseInt(data1.data.received_value) + parseInt(data2.data.received_value);
    $("#donation_pot_1").text(combinedText);
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="donation_pot_1"></div>

答案 1 :(得分:1)

您可以通过将第二个JSON请求放在第一个JSON请求的回调中来链接这两个。这意味着第二个JSON请求将在第一个JSON请求之后被调用(可能稍微慢一些),但这是一种简单的方法来按顺序获得接收的结果。

例如:

$.getJSON("https://www.chain.so/api/v2/address/DOGE/DK1i69bM3M3GutjmHBTf7HLjT5o3naWBEk", function(data1) {
  $.getJSON("https://www.chain.so/api/v2/address/DOGE/DLztFgLx33AMMiWFvLkbwy3cDdiuE9ZTrS", function(data2) {
        var combinedText = data1.data.received_value + data2.data.received_value;
    });
});

如果您仍然希望同时发送两个JSON请求,那么稍微好一点的方法是使用一个回调来确保两个请求都在将两个请求链接在一起之前。这再次保留了JSON请求的顺序。

此选项也更整洁,特别是对于更多JSON请求,因为您不必继续嵌套它们。

var data = [];
var numJsonRequests = 2;
function callback(index, data) {
    // fill in data
    data[index] = numJsonRequests;

    // check that all requests are in
    for(var i = 0; i < numJsonRequests; i++) {
        if(data[i] === undefined) return;
    }

    // all json requests are in, do something with the combined data
    var combinedData = data.join("");
}

// call callback from json requests
$.getJSON("https://www.chain.so/api/v2/address/DOGE/DK1i69bM3M3GutjmHBTf7HLjT5o3naWBEk", function(data) {
  callback(data.data.received_value, 0);
});
$.getJSON("https://www.chain.so/api/v2/address/DOGE/DLztFgLx33AMMiWFvLkbwy3cDdiuE9ZTrS", function(data) {
    callback(data.data.received_value, 1);
});