繁体   English   中英

使用$ .parseJSON()时无法遍历数组

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM