Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-使用变量获取数组的一部分_Javascript_Arrays_Json_Loops_Cgi - Fatal编程技术网

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

Javascript-使用变量获取数组的一部分,javascript,arrays,json,loops,cgi,Javascript,Arrays,Json,Loops,Cgi,我目前正在制作一个连接到CGI后端的网页。到目前为止,CGI后端工作得很好,但我对JavaScript不太了解,因此我很难处理从AJAX JSON请求中获得的结果 我所拥有的: JavaScript函数查询CGI CGI以JSON数组响应 { "ARRAY": [ { "line": "1", "numbers": "12321", "var": "12321", "v

我目前正在制作一个连接到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>

行号varvar2
数组[0]。线性数组[0]。数字数组[0]。变量数组[0]。变量2
数组[1]。线性数组[1]。数字数组[1]。变量数组[1]。变量2
所以,我的问题是:


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

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

for (var i = 0, len = ARRAY.length; i < len; i++) {
    //Build table row using ARRAY[i].line, etc
}
如果您使用的是jQuery,则每个都有$

$.each(ARRAY, function (idx, elt) {
    //Build table row using elt.line, etc
});
下面是一个使用jQuery库(不是必需的,但会使事情变得更简单)的更完整的示例:

var url='/cgi-bin/your_script_name.cgi';
var html='linenumbersvar2';
$.get(url、函数(响应){
$.each(response.ARRAY,function(idx,elt){
html+=''+elt.line+''+elt.numbers+''+elt.var+''+elt.var2+'';
});
html+='';
$('#目标元素').html(html);
});

在本例中,您将表放入id为
目标元素的元素中,您的cgi脚本位于
/cgi-bin/your_-script\u-name.cgi
。如果不能使用jQuery,则需要手动执行
XMLHttpRequest
,将其
响应类型设置为
'json'
,并将函数绑定到
onload
(或者如果支持旧浏览器,
onreadystatechange
,然后检查
readyState==4
)。希望有帮助。

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

for (var i = 0, len = ARRAY.length; i < len; i++) {
    //Build table row using ARRAY[i].line, etc
}
如果您使用的是jQuery,则每个都有$

$.each(ARRAY, function (idx, elt) {
    //Build table row using elt.line, etc
});
下面是一个使用jQuery库(不是必需的,但会使事情变得更简单)的更完整的示例:

var url='/cgi-bin/your_script_name.cgi';
var html='linenumbersvar2';
$.get(url、函数(响应){
$.each(response.ARRAY,function(idx,elt){
html+=''+elt.line+''+elt.numbers+''+elt.var+''+elt.var2+'';
});
html+='';
$('#目标元素').html(html);
});

在本例中,您将表放入id为
目标元素的元素中,您的cgi脚本位于
/cgi-bin/your_-script\u-name.cgi
。如果不能使用jQuery,则需要手动执行
XMLHttpRequest
,将其
响应类型设置为
'json'
,并将函数绑定到
onload
(或者如果支持旧浏览器,
onreadystatechange
,然后检查
readyState==4
)。希望有帮助。

这将解析JSON?是的。谢谢你指出我的缺点,内森。我只是花了一些时间阅读了这些差异(我假设没有差异),以及为什么要将数组的长度分配给一个变量以提高性能。@ZGZ12-JSON是JavaScript对象表示法,这基本上意味着在JavaScript中使用JSON时,它只是一个常规对象。因此,如果使用例如
jQuery.get()
,则无需解析。您只需像其他JavaScript对象一样与数据交互,就可以了@Trendy-很高兴我能帮忙:)JSON本身是一个普通的字符串(对象表示法),而不是一个对象。因此,如果您使用的是香草JavaScript,那么您首先需要使用
JSON.parse()
(或者在旧浏览器中使用
eval()
)将JSON字符串转换为JS对象。因此,您的前3个示例无法正常工作。但是,jQuery的
get()
会自动解析响应(JSON字符串到JavaScript对象),前提是发送的响应具有正确的头。@w3d-是的,我可能过于简化了。问题是“如何在数组上循环”,所以我认为详细讨论JSON解析可能没有帮助。这将解析JSON?是的。谢谢你指出我的缺点,内森。我只是花了一些时间阅读了这些差异(我假设没有差异),以及为什么要将数组的长度分配给一个变量以提高性能。@ZGZ12-JSON是JavaScript对象表示法,这基本上意味着在JavaScript中使用JSON时,它只是一个常规对象。因此,如果使用例如
jQuery.get()
,则无需解析。您只需像其他JavaScript对象一样与数据交互,就可以了@Trendy-很高兴我能帮忙:)JSON本身是一个普通的字符串(对象表示法),而不是一个对象。因此,如果您使用的是香草JavaScript,那么您首先需要使用
JSON.parse()
(或者在旧浏览器中使用
eval()
)将JSON字符串转换为JS对象。因此,您的前3个示例无法正常工作。但是,jQuery的
get()
会自动解析响应(JSON字符串到JavaScript对象),前提是发送的响应具有正确的头。@w3d-是的,我可能过于简化了。问题是“如何在数组上循环”,所以我认为详细讨论JSON解析可能没有帮助。