Javascript JSON到HTML表代码
我正在尝试提取JSON结果的数据,然后将数据放入html表中,不幸的是,到目前为止我还没有任何运气,希望用我创建的内容获得一些指针 我还希望该选项只显示一些JSON结果,因此排除了一些数据 JSON结果网站= 以下是迄今为止我所拥有的不起作用的内容:( Html代码:-Javascript JSON到HTML表代码,javascript,json,html,html-table,Javascript,Json,Html,Html Table,我正在尝试提取JSON结果的数据,然后将数据放入html表中,不幸的是,到目前为止我还没有任何运气,希望用我创建的内容获得一些指针 我还希望该选项只显示一些JSON结果,因此排除了一些数据 JSON结果网站= 以下是迄今为止我所拥有的不起作用的内容:( Html代码:- <!DOCTYPE html> <html> <body> <h1>Asiccoin (ASC)</h1> <div id="id01"></div
<!DOCTYPE html>
<html>
<body>
<h1>Asiccoin (ASC)</h1>
<div id="id01"></div>
<script>
var xmlhttp = new XMLHttpRequest();
var url = "http://asc.thecoin.pw/index.php?page=api&action=public";
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
myFunction(xmlhttp.responseText);
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
function myFunction(response) {
var arr = JSON.parse(response);
var i;
var out = "<table>";
for(i = 0; i < arr.length; i++) {
out += "<tr><td>" +
arr[i].pool_name +
"</td><td>" +
arr[i].hashrate +
"</td><td>" +
arr[i].workers +
"</td></tr>"
arr[i].shares_this_round +
"</td></tr>" +
arr[i].last_block +
"</td></tr>" +
arr[i].network_hashrate +
"</td></tr>" +
arr[i].fee +
"</td></tr>" +
arr[i].payout +
"</td></tr>";
}
out += "</table>";
document.getElementById("id01").innerHTML = out;
}
</script>
</body>
</html>
Asiccoin(ASC)
var xmlhttp=new XMLHttpRequest();
变量url=”http://asc.thecoin.pw/index.php?page=api&action=public";
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
myFunction(xmlhttp.responseText);
}
}
open(“GET”,url,true);
xmlhttp.send();
功能myFunction(响应){
var arr=JSON.parse(响应);
var i;
var out=“”;
对于(i=0;i
非常感谢您的帮助。您正试图在
myFunction()
中运行一个数组。但是您的JSON数据表示一个对象
尝试以下方法快速解决此问题:更改
var arr = JSON.parse(response);
对此
var arr = [JSON.parse(response)];
这将把你的对象(从JSON.parse
)放入一个数组中,这样arr.length
就不会是未定义的
,你可以构建你的表。只要你的JSON仍然是一个对象,这就可以工作。如果你的响应是一个数组,那么你的原始代码就可以工作
您可以使用一个简单的替代方案来扩展转换:
var arr = JSON.parse(response);
if (arr.length === undefined) {
arr = [arr];
}
如果要排除某些数据,可以省略一些用于处理该数据的代码(只是不要在表中输出)。或者,如果一个数组中有多个对象返回给您,则需要一个条件来省略某些数据集,例如(任意)
for(i=0;i 如果(arr[i].workersAs响应是一个JOSN对象而不是数组,则不必循环它。使用此函数:
function myFunction(response) {
var arr = JSON.parse(response);
var i;
var out = "<table>";
out += "<tr><td>" +
arr['pool_name'] +
"</td><td>" +
arr['hashrate'] +
"</td><td>" +
arr['workers'] +
"</td></tr>"
arr['shares_this_round'] +
"</td></tr>" +
arr['last_block'] +
"</td></tr>" +
arr['network_hashrate'] +
"</td></tr>" +
arr['fee'] +
"</td></tr>" +
arr['payout'] +
"</td></tr>";
out += "</table>";
document.getElementById("id01").innerHTML = out;
}
函数myFunction(响应){
var arr=JSON.parse(响应);
var i;
var out=“”;
输出+=“”+
arr['pool_name']+
"" +
arr['hashrate']+
"" +
arr[“工人”]+
""
arr[“本轮股票”]+
"" +
arr[“最后一块”]+
"" +
arr['network_hashrate']+
"" +
arr[“费用”]+
"" +
arr[“付款”]+
"";
out+=“”;
document.getElementById(“id01”).innerHTML=out;
}
注意:只需确保每次响应
是否为JOSN对象。如果它返回数组
,则上述方法对数组响应无效。因此,使用数组.isArray(响应)检查响应
是否为数组
如果它像您上面所做的那样通过数组循环,请使用我的逻辑。我可以直接访问变量中的响应,因为我们无法从请求中获取日期。
这是正常工作
var xmlhttp=new XMLHttpRequest();
变量url=”http://asc.thecoin.pw/index.php?page=api&action=public";
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4&&xmlhttp.status==200){
myFunction(xmlhttp.responseText);
}
}
open(“GET”,url,true);
xmlhttp.withCredentials=false;
xmlhttp.send();
函数myFunction(响应){
out=“”;
输出+=“”+
response.pool_名称+
"" +
响应速度+
"" +
回应:工人+
""
response.shares\u这一轮+
"" +
响应。最后一个块+
"" +
response.network\u hashrate+
"" +
答复.费用+
"" +
答复.付款+
"";
out+=“”;
document.getElementById(“id01”).innerHTML=out;
}
Asiccoin(ASC)
打开控制台,阅读错误消息,解释为什么您无法访问它。然后谷歌“CORS javascript”.http://asc.thecoin.pw/index.php?page=api&action=public
返回的是一个JOSN对象而不是数组!Json只返回1个对象,将返回更多对象,而不需要遍历循环,因为服务返回的是对象
而不是数组
!也不需要使用.operator i ha直接获取数组来访问您的响应我添加了答案请检查。为什么要在代码中保留不必要的for循环..这可能会造成混乱,在某些情况下很难调试..我改为'var arr=[JSON.parse(response)]“但不幸的是,它没有纠正它。@Rayon Dabre:我们不确定,请求总是只返回一个对象。当有更多对象时,将有一个数组要运行。我认为你的解决方案在这种情况下不起作用……我觉得它会在数组中创建数组。@Rayon Dabre:你是对的,这就是我扩展我的回答涉及到这个问题typeof response
将永远不会返回arrayThanks@RayonDabre!要检查response
是一个可以使用的数组或对象:array.isArray(response);
jQuery
没有标记,也不需要!哦,那么您使用的是数据而不是html链接吗?如何使其与链接一起工作?@daygle在您的代码中这很好,您需要在“myFunction”中进行更改仅..哦,Rayon Dabre是正确的-CORS在我的服务器上被取消,这可能会阻止任何数据出现。@Ankit:您的代码可以工作,因为您直接设置JSON,而不是通过AJAX从服务器中提取JSON。但这是当前的主要问题。CORS在服务器上被禁用,因此无法工作
function myFunction(response) {
var arr = JSON.parse(response);
var i;
var out = "<table>";
out += "<tr><td>" +
arr['pool_name'] +
"</td><td>" +
arr['hashrate'] +
"</td><td>" +
arr['workers'] +
"</td></tr>"
arr['shares_this_round'] +
"</td></tr>" +
arr['last_block'] +
"</td></tr>" +
arr['network_hashrate'] +
"</td></tr>" +
arr['fee'] +
"</td></tr>" +
arr['payout'] +
"</td></tr>";
out += "</table>";
document.getElementById("id01").innerHTML = out;
}