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

2024-06-26

Goal:我正在使用 coinmarketcap.com API(link) https://api.coinmarketcap.com/v1/ticker/?convert=EUR. 预先我将他们的数据转换成 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>

Output:

[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[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 函数中替换以下代码行:

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 http://plnkr.co/edit/aHXFVAjH6qoKk2vmOf0u?p=preview

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JSON数据通过JS/AJAX转化为PHP 的相关文章

随机推荐

  • 使用批处理从文本文件中提取特定文本

    我正在尝试使用批处理代码从文本文件中提取特定文本 我需要从中提取数据的文件将有多行文本 并且行数会有所不同 这意味着指示器的位置也会发生变化 以下是文本文件的示例 File 1
  • 如何裁剪 JavaFX 图像并调整其大小?

    我正在尝试在 JavaFX 画布上显示非常大的图像 单张图像的分辨率为11980x8365 每个图像都有一个相应的世界文件 我可以使用它来正确定位图像 我的画布尺寸是 800x600 有时我需要在画布上写下整个图像 有时只是其中的一部分 这
  • 通过span标签动态包装js字符串,这可能会在React中危险地渲染

    我有一个字符串 我想使用 aria label 标签将 span 标签单独添加到字母表中 最终结果将在 React 中危险地呈现 请指教 这就是我所拥有的 const str D C B B const addAriaLabels str
  • 如何在 Android 中正确设置 google play 登录?

    我在安卓上开发了一个游戏 我尝试实现 GooglePlay SignIn 但显示错误 我无法调试此错误 我尝试在模拟器以外的不同手机型号中安装该应用程序 Code public void startSignInIntent startAct
  • 是否可以动态添加代码/扩展类?

    我想为我的代码编写一种 插件 模块 系统 如果我可以在定义类后将内容 添加 到类中 那么事情会变得更加容易 例如 这样的事情 class foo public function a return b 上课了 现在我想在定义后向其中添加另一个
  • 以编程方式滚动 NatTable

    关于 stackoverflow 的第一个问题 类似的问题here https stackoverflow com questions 3531081 scrolling swt table programmatically 只有我想滚动N
  • 跟踪数据包通过内核 (linux)

    我有两台机器设置为使用 Ip Security 机器 A 我们称它们为 A 和 B 有一个套接字 该套接字绑定到本地机器上的特定 UDP 端口 并且它经常轮询它以查看是否收到任何内容在上面 当我禁用 IP 安全性时 两台机器之间的数据可以正
  • 如何将 SQL 中的多个内联接转换为 LINQ?

    我已经掌握了 LINQ to SQL 的基础知识 但我一直在努力尝试让 JOIN 正常工作 我想知道如何将以下内容转换为 LINQ to SQL 最好使用方法链接 因为这是我的首选格式 SELECT c CompanyId c Compan
  • 将行转换为 pandas 中逗号分隔的字符串

    我有一个熊猫数据框 from pandas import DataFrame import pandas as pd df2 DataFrame a one one two two three two one six b x y z y x
  • .NET:为什么不检查枚举的范围/值?

    这一直困扰着我 也许对 NET 内部结构有一定了解的人可以向我解释一下 假设我定义一个枚举如下 public enum Foo Eenie 1 Meenie 2 Miney 3 Moe 4 现在 还假设我的代码中的某处有以下代码 int b
  • 如何去掉所有标签并得到纯文本?

    我必须将用户输入文本存储在我的数据库中HTML and CSS格式 案例是 Rad编辑器 http www telerik com products aspnet ajax editor aspx 用户将文本从 MSWord 复制到此编辑器
  • 如何在后续几代中禁用派生类中的设计器

    为了禁用类中的组件设计器 只需向其添加 System ComponentModel DesignerCategory 属性很简单 但是它不适用于任何一代中从此类派生的任何类 例如 System ComponentModel Designer
  • 指定自定义序列化程序时,错误详细信息未反序列化

    我正在使用自定义XmlObjectSerializer在我的应用程序中 为此 我替换XmlSerializerOperationBehavior with MyOperationBehavior看起来像这样 public class MyO
  • ng2-bootstrap 在 Angular 2 中不起作用(“alert”不是已知元素:)

    我已经通过以下方式在运行 Angular 2 0 1 的项目上安装了 ng2 bootstrap npm install ng2 bootstrap save 我已经这样设置我的项目 systemjs config js function
  • 输入属性在 ngx-charts 模板中不起作用

    按照这个answer https stackoverflow com questions 47826641 ngx charts cant load bar charts directly with async pipe in angula
  • 我需要比较两个数据帧以进行类型验证并发送非零值作为输出

    我正在比较两个数据帧 基本上 这些是两个不同数据源的模式 一个来自 hive 另一个来自 SAS9 2 我需要验证两个数据源的结构 因此我将模式转换为两个数据帧 它们是 SAS 架构将采用以下格式 scala gt metadata sho
  • 将 UIActivityIndi​​catorView 添加到 UIBarButton

    如何将 UIActivityIndi catorView 微调器圆添加到 UIBarButton 中 以便当用户点击导航栏上的这些按钮之一时 他们会在加载时看到一个微调器 如果您尝试在导航栏按钮中显示活动轮 例如 您的导航栏上可能有一个刷新
  • php洗一副牌

    我想使用 php 创建随机桥手的集合 我认为我可以将有序的卡片包编码为字符串 deal下面 我喜欢它有 52 个字母 同时考虑大小写 我发现了 php 函数str shuffle 所以我想我可以做以下事情 pack abcdefghijkl
  • Zend Framework 调用另一个控制器操作

    您好 我在这里遇到调用另一个控制器操作来发送邮件的问题 这是我的代码 user php public function followAction follow id this gt getParam id response a href c
  • JSON数据通过JS/AJAX转化为PHP

    Goal 我正在使用 coinmarketcap com API link https api coinmarketcap com v1 ticker convert EUR 预先我将他们的数据转换成 PHP 样本 现在我想使用AJAX J