使用ajax,php和javascript进行实时json数据更新

时间:2015-02-08 07:09:59

标签: javascript php jquery ajax json

我正在制作一个简单的比特币价格股票概览网站,我正在使用8种不同比特币交易所的API。都是JSON。

<?php
function getPrice($url){
    $decode = file_get_contents($url);
    return json_decode($decode, true);
}

$blockchain = getPrice('https://blockchain.info/ticker');
$blockchainPrice = $blockchain["USD"]["last"];
?>

我只是在表格中回应它

   <table>
        <tr> <th> Current prices</th><th> Volume</th> </tr>
        <tr>
        <td>Blockchain.info</td>
        <td>$<?php echo $blockchainPrice; ?></td>
        </tr>
</table>

但是,我需要每20秒实时更新一次价格,但在这段代码中,每当我刷新,我得到一个改变的价格,我会迎合大量观众,我不想打api呼叫限制,所以我希望价格每20秒更新一次。

我尝试使用ajax实时更新值,但它无法正常工作

这是我的ajax代码

$.ajax({
        url: 'https://blockchain.info/ticker',
        dataType: 'json',
        cache: false,
        success: function(result) {
            $('test').html(result.last);
        }
    });
}, 20000);

我做了一个id =“test”的div

 

我期待价格得到回应,并且每20秒更新一次。但它没有发生

1 个答案:

答案 0 :(得分:2)

这是 工作的代码:

function update() {
    $.getJSON('https://blockchain.info/ticker').done(function(res) {
        $('#test').html(res.last); 
    });
}

var interval = window.setInterval(update, 20000);

它之所以没有,是因为blockchain.info没有针对其股票代码API的CORS头,也没有JSONP。这意味着他们不希望您能够通过javascript使用它,并且他们希望能够限制服务器发出的请求。

但是,您可以做的是让您的网络服务器每x秒使用一次自动收报机API。然后在javascript中,让您的客户每隔20秒向您的服务器发送一个AJAX请求。祝你好运:)