目标: 我正在使用coinmarketcap.com API (link)。 预先 我将他们的数据导入PHP。样品:
<?php
$url = "https://api.coinmarketcap.com/v1/ticker/?convert=EUR";
$response = file_get_contents($url);
$obj = json_decode($response,true);
print_r($obj);
?>
现在我想使用AJAX / JS来获取实时数据。我现在得到以下JS代码:
<p id="collect"></p>
<script>
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange=function() {
if (this.readyState == 4 && this.status == 200) {
var obj = JSON.parse(this.responseText);
document.getElementById("collect").innerHTML = obj;
}
};
xhttp.open("GET", "https://api.coinmarketcap.com/v1/ticker/?convert=EUR" + Math.random(), true);
xhttp.send();
}
(function() {
loadDoc()
})();
setInterval ( "loadDoc()", 5000 );
</script>
输出:
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
^输出。我也尝试了上面没有JSON.parse的代码,但它给了我一串所有的东西。
问题:如何将上述实时数据恢复到PHP数组中?我是新手,但我已经试了好几天了。
答案 0 :(得分:2)
将数据写回PHP是不可能的,因为PHP在服务器端进行评估,客户端只获取其结果页面。 但这是一个JavaScript解决方案,它只在客户端运行:
你应该知道你的结果是这样的:
[
{
"id": "bitcoin",
"name": "Bitcoin",
"symbol": "BTC",
"rank": "1",
"price_usd": "17391.5",
"price_btc": "1.0",
"24h_volume_usd": "15047800000.0",
"market_cap_usd": "291076752838",
"available_supply": "16736725.0",
"total_supply": "16736725.0",
"max_supply": "21000000.0",
"percent_change_1h": "-0.14",
"percent_change_24h": "3.75",
"percent_change_7d": "45.85",
"last_updated": "1513104255",
"price_eur": "14834.288623",
"24h_volume_eur": "12835201583.6",
"market_cap_eur": "248277409254"
},
....
]
它是一个对象数组,其中每个对象包含以下属性(id,name,symbol,...,market_cap_eur)。
显示所有需要循环遍历数组并为对象创建某种dispalytemplate的内容。
因此,您应该在已注册的onreadystatechange-function中替换以下代码行:
document.getElementById("collect").innerHTML = obj;
有类似的东西:
var objlength = obj.length;
var element = document.getElementById("collect");
element.innerHTML = "";
for ( var i = 0; i < objlength; i++){
element.innerHTML += JSON.stringify(obj[i])+"<br />";
}
这将为新行中的每个加密货币创建字符串化结果。 它的结果仍然是不可读的,并且设置innerHTML的代码非常脏。 要进一步增强至少显示,您可以执行以下操作:
var objlength = obj.length;
var element = document.getElementById("collect");
element.innerHTML = "";
for ( var i = 0; i < objlength; i++){
element.innerHTML += obj[i].name+" is "+ obj[i].price_eur +"<br />";
}
应该返回curreny的名称和每行的当前EUR价格。 您可以通过所有需要的属性扩展它。
但是如上所述它快速而又肮脏,请不要通过此代码判断我。
您还需要删除请求中的+ Math.Random()。 这是一个有效的实例:http://plnkr.co/edit/aHXFVAjH6qoKk2vmOf0u?p=preview
答案 1 :(得分:0)
PHP代码
gsutil -m cp -R gs://bucket/* .
因为URL返回JSON数据,已经