未捕获的TypeError:通过Json对象访问arraylist时无法读取未定义的属性'length'

时间:2014-02-05 13:12:35

标签: java javascript jquery json struts2

我从struts2动作类返回一个数组列表。 当我试图通过JSON访问我的JavaScript文件中的数组列表时,

我正在

  

“未捕获的TypeError:无法读取未定义的属性'长度'”。

位于以下行json.EmpListByOffsetAndLength

请参阅下面的代码。我想将arraylist中的数据显示在我的jsp页面的表格中。

alert(url);
$.ajax({
    type : "POST",
    cache : false,
    url : url,
    success : function(json) {
        var table = document.getElementById("tablereload");
        var rowCount = document.getElementById("tablereload").rows.length;

        alert("this is row count" +rowCount);

        $("#test").html('');

        $.each(json.EmpListByOffsetAndLength, function(index, value) {
            var row = table.insertRow(rowCount);
            var i = 0;

            for ( var key in value) {
                var val = value[key];

                alert(val);
                var cell = row.insertCell(i);

                var div = document.createElement('div'), // create
                // DIV
                // element
                txt = document.createTextNode(val); // create
                // text
                // node
                div.appendChild(txt);
                cell.appendChild(div);

                i++;
            }
        });
    }
}) 

4 个答案:

答案 0 :(得分:4)

我认为你没有在ajax中提到dataType ......

 $.ajax({
          url:"",
          type:"post",
          dataType:"json",
           success:function(outputdata){ //do somethins
               console.log(outputdata);   
        }
});

答案 1 :(得分:0)

您可以检查选择器是否正常工作吗?我怀疑这一行没有返回有效的对象:

var table = document.getElementById("tablereload");

答案 2 :(得分:0)

试试这个?您需要确保在表格中使用tbody标记。

var rowCount = document.getElementById('tablereload').getElementsByTagName('tbody')[0].getElementsByTagName('tr').length;

在此处找到:Counting the number of rows in a table NOT using jquery

答案 3 :(得分:0)

感谢您的帮助。

问题已解决。实际上,我在Java中的arraylist是EmpListByOffsetAndLength,但是在控制台中,它以e mpListByOffsetAndLength作为json对象出现,即小'e'。这就是为什么当我们在它上面运行长度函数时,它为底层对象显示了cnnot read length函数。