Java 未捕获类型错误:无法读取属性';长度';通过Json对象访问arraylist时未定义的

Java 未捕获类型错误:无法读取属性';长度';通过Json对象访问arraylist时未定义的,java,javascript,jquery,json,struts2,Java,Javascript,Jquery,Json,Struts2,我正在从struts2操作类返回一个数组列表。 当我试图通过JSON访问JavaScript文件中的数组列表时 我越来越 “未捕获的TypeError:无法读取未定义的属性'length' 在下面的行中json.EmpListByOffsetAndLength 请参阅下面的代码。我想将arraylist中的数据显示到jsp页面的表中 alert(url); $.ajax({ type : "POST", cache : false, url : url, succ

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

我越来越

“未捕获的TypeError:无法读取未定义的属性'length'

在下面的行中
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++;
            }
        });
    }
}) 

你能检查一下你的选择器是否工作正常吗?我怀疑此行没有返回有效的对象:

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

你能检查一下你的选择器是否工作正常吗?我怀疑此行没有返回有效的对象:

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

我想你没有提到ajax中的数据类型

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

我想你没有提到ajax中的数据类型

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

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

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

在此处找到:

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

var rowCount = document.getElementById('tablereload').getElementsByTagName('tbody')[0].getElementsByTagName('tr').length;
在此处找到:

谢谢您的帮助

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

谢谢您的帮助


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

什么是
console.log(json.EmpListByOffsetAndLength)显示?您需要调试并查看问题所在。我的第一个猜测是
json
没有
EmpListByOffsetAndLength
属性,这可能是因为jQuery没有将其解析为json,因为您在AJAX请求中没有声明
dataType
。什么是
console.log(json.EmpListByOffsetAndLength)显示?您需要调试并查看问题所在。我的第一个猜测是
json
没有
EmpListByOffsetAndLength
属性,可能是因为jQuery没有将其解析为json,因为您在AJAX请求中没有声明
数据类型。