[英]What is the best way extract JSON data from an api url using javascript and a GET request?
[英]Extract data from JSON API using Javascript
如何提取以下数据。 我只想在此API中的“ networkdiff”之后打印出值编号。
这是来自其他网站的API的URL:
我希望代码自动从上面的URL检索数据,并在“ networkdiff”之后显示值以显示在其他网页上。
到目前为止,这是我的代码,可以放入自己的网页中:
<HTML>
<body>
<script>
I don't know what I should put in this script part.
</script>
</body>
</html>
以下是网址显示的数据:
{
"getpoolstatus":{
"version":"1.0.0",
"runtime":10.684967041016,
"data":{
"pool_name":"21 Coin Pool @ Luckyminers.com",
"hashrate":0,
"efficiency":97.79,
"workers":0,
"currentnetworkblock":0,
"nextnetworkblock":1,
"lastblock":40544,
"networkdiff":1,
"esttime":0,
"estshares":4096,
"timesincelast":1240429,
"nethashrate":0
}
}
}
由于数据来自外部域,因此除非服务器启用了CORS,否则无法使用Ajax来获取数据。 似乎并非如此,但似乎支持JSONP :
<script>
function processResponse(data) {
console.log(data);
}
</script>
<script src="http://21.luckyminers.com/index.php?page=api&...&callback=processResponse></script>
callback=parseResponse
使服务器返回JS,其中包括对processResponse
的函数调用。 访问/处理(嵌套)对象,数组或JSON中说明了如何访问您真正想要的信息。
您以哪种方式调用JSON?
您可以使用回调函数( 工作示例 )来调用它,并将其作为脚本包括在内:
updateResult=function()
{
var s=document.createElement('script');
s.src=domain+"/index.php?page=api&callback=showResult&action=getpoolstatus&api_key="+api_key;
document.body.appendChild(s);
}
您必须像这样定义回调:
showResult=function(data)
{
document.getElementById('result').innerText=data.getpoolstatus.data.networkdiff;
}
如果使用JQuery调用它并获取JSON对象,则可以像下面的示例一样在参数中定义回调, 但是必须具有相同的来源 (您的脚本必须在相同的域中运行(在这种情况下为21.luckyminers.com) ):
$.getJSON(
domain+"/index.php?page=api&action=getpoolstatus&api_key="+api_key,
function(data)
{
document.getElementById('result').innerText=data.getpoolstatus.data.networkdiff;
}
);
但是无论如何都要小心 。 您从哪里获得API密钥? 如果将其放在客户端脚本(如JavaScript)上,则任何人都可以读取该密钥,并且使用该密钥可能会造成一些损害……:S
您需要在网页中包含JSON.js才能在javascript中使用JSON函数。 这是下载的URL https://github.com/douglascrockford/JSON-js
然后,您可以使用beloe代码将JOSN字符串解析为javascript对象。
var objectJSON = JSON.parse(jsonStr);
反之,您还可以使用字符串化功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.