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

时间:2014-11-27 13:15:16

标签: javascript jquery html arrays

我有这个代码,当我点击一个按钮时会创建一个表。您在下面看到的代码非常完美,当我单击我的按钮时,表格将在目标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用作我的数组的索引吗?

3 个答案:

答案 0 :(得分:3)

这个问题是因为你做了太多的循环。数组为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';  
}

答案 1 :(得分:2)

当遍历零索引数组时,您需要使用小于(&lt;),不小于或等于(&lt; =)。数组中的最后一个元素将是index:length - 1。

更改:

for(i=0; i<=dataArray.length; i++)

要:

for(i=0; i<dataArray.length; i++)

应该工作。

答案 2 :(得分:2)

您可以使用每个方法循环遍历json对象,即:

$.each(dataArray, function (index, element){
    alert( element.Device_Name );
});

更新..