gpt4 book ai didi

javascript - JSON数据通过JS/AJAX转化为PHP

转载 作者:行者123 更新时间:2023-11-29 20:58:53 24 4
gpt4 key购买 nike

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

最佳答案

据我所知,将数据写回 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)。

要显示所有这些,您需要遍历数组并为对象创建某种显示模板。

因此,您应该在已注册的 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 />";
}

每行应返回货币名称和当前欧元价格。您可以通过所有需要的属性对其进行扩展。

但如前所述,它又快又脏,请不要用这段代码来评判我。

您还需要删除请求中的 + Math.Random()。这是一个有效的实例:http://plnkr.co/edit/aHXFVAjH6qoKk2vmOf0u?p=preview

关于javascript - JSON数据通过JS/AJAX转化为PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47779478/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com