Javascript-使用一个变量获取数组的一部分

Javascript - Using a variable to get a piece of an array

本文关键字:获取 变量 数组 一部分 一个 Javascript-      更新时间:2023-09-26

我目前正在开发一个连接到CGI后端的网页。到目前为止,CGI后端工作得很好,但我对JavaScript不太了解,所以我很难从AJAX JSON请求中获得结果。

我所拥有的:

JavaScript函数查询CGI。

CGI以JSON数组进行响应。

    {
    "ARRAY": [
        {
            "line": "1",
            "numbers": "12321",
            "var": "12321",
            "var2": "12321"
        },
        {
            "line": "2",
            "numbers": "-1",
            "var": "12320",
            "var2": "6160"
        }
    ]
}

行、数字、var和var2都必须放在表的单独单元格中。

<table>
<tr>
<th>line</th><th>numbers</th><th>var</th><th>var2</th>
</tr>
<tr>
<td>ARRAY[0].line</td><td>ARRAY[0].numbers</td><td>ARRAY[0].var</td><td>ARRAY[0].var2</td>
</tr>
<tr>
<td>ARRAY[1].line</td><td>ARRAY[1].numbers</td><td>ARRAY[1].var</td><td>ARRAY[1].var2</td>
</tr>
</table>

所以,我的问题是:

我永远不知道数组中会有多少个对象。这里有2个,但有时可能有20个。如果需要,我可以修改我的JSON。我该如何使它循环直到碰到最后一个对象?

有几种不同的方法。传统的方法是使用一个简单的for循环:

for (var i = 0, len = ARRAY.length; i < len; i++) {
    //Build table row using ARRAY[i].line, etc
}

不久前,我们得到了Array.forEach,只要你不必支持旧版本的IE,它就会很好地工作(你也可以多填充它们):

ARRAY.forEach (function (idx, elt) {
    //Build table row using elt.line, etc
});

如果你使用的是jQuery,还有$.each:

$.each(ARRAY, function (idx, elt) {
    //Build table row using elt.line, etc
});

下面是一个更完整的例子,说明您需要什么,使用jQuery库(不是必需的,但会让事情变得更容易):

var url = '/cgi-bin/your_script_name.cgi';
var html = '<table><tr><th>line</th><th>numbers</th><th>var</th><th>var2</th></tr>';
$.get(url, function (response) {
    $.each(response.ARRAY, function (idx, elt) {
        html += '<tr><td>' + elt.line + '</td><td>' + elt.numbers + '</td><td>' + elt.var + '</td><td>' + elt.var2 + '</td></tr>';
    });
    html += '</table>';
    $('#target-element').html(html);
});

在本例中,您将表放入id为target-element的元素中,cgi脚本位于/cgi-bin/your_script_name.cgi。如果不能使用jQuery,则需要手动生成XMLHttpRequest,将其responseType设置为'json',并将函数绑定到onload(或者,如果支持旧浏览器,则需要onreadystatechange,然后检查readyState === 4)。希望能有所帮助。