JSON数据通过JS / AJAX转换成PHP

时间:2017-12-12 18:42:54

标签: javascript php json ajax

目标: 我正在使用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数组中?我是新手,但我已经试了好几天了。

2 个答案:

答案 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数据,已经