[英]Can't loop through an array when using $.parseJSON()
我有这段代码,当我单击按钮时会创建一个表。 您在下面看到的代码非常完美,当我单击按钮时,该表将在目标div中创建。 但是问题是,当我在for循环中将dataArray
的索引从0
替换为i
时,该表没有显示,并且我在Google Chrome浏览器的控制台中收到此错误
未捕获的TypeError:无法读取未定义的属性“ Device_Name”
$(document).ready(function()
{
$(".button").click(function()
{
var clickBtnValue = $(this).val();
var ajaxurl = 'ajax.php',
data = {'action': clickBtnValue};
$.post(ajaxurl, data, function (response)
{
dataArray = $.parseJSON(response);
var tbody = '';
var theader = '<table><tr><td>#</td><td>Name</td><td>Id</td></tr>\n';
for(i = 0; i <= dataArray.length; i++)
{
tbody += '<tr>';
tbody += '<td>' + (i + 1) + '</td>';
tbody += '<td>' + dataArray[0].Device_Name + '</td>';
tbody += '<td>' + dataArray[0].Device_Id + '</td>';
tbody += '</tr>\n';
}
var tfooter = '</table>';
document.getElementById('dataTable').innerHTML = theader + tbody + tfooter;
});
});
});
我不能将变量i
用作数组的索引是什么?
此问题是因为您执行了1个太多的循环。 数组索引为0,因此您想循环到长度-1。
然后,您可以使用i
来访问数组:
for(var i = 0; i < dataArray.length; i++)
{
tbody += '<tr>';
tbody += '<td>' + (i+1) + '</td>';
tbody += '<td>' + dataArray[i].Device_Name + '</td>';
tbody += '<td>' + dataArray[i].Device_Id + '</td>';
tbody += '</tr>\n';
}
遍历零索引数组时,需要使用小于(<),不小于或等于(<=)。 数组中的最后一个元素将在索引处:length-1。
变更:
for(i=0; i<=dataArray.length; i++)
至:
for(i=0; i<dataArray.length; i++)
应该管用。
您可以使用每种方法来循环遍历json对象,即:
$.each(dataArray, function (index, element){
alert( element.Device_Name );
});
更新..
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.