Javascript-使用变量获取数组的一部分
我目前正在制作一个连接到CGI后端的网页。到目前为止,CGI后端工作得很好,但我对JavaScript不太了解,因此我很难处理从AJAX JSON请求中获得的结果 我所拥有的: JavaScript函数查询CGI CGI以JSON数组响应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
{
"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解析可能没有帮助。