Javascript 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

我正在尝试提取JSON结果的数据,然后将数据放入html表中,不幸的是,到目前为止我还没有任何运气,希望用我创建的内容获得一些指针

我还希望该选项只显示一些JSON结果,因此排除了一些数据

JSON结果网站=

以下是迄今为止我所拥有的不起作用的内容:(

Html代码:-

<!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;
}