未捕获的TypeError:即使命名正确,也无法读取未定义错误的属性“长度”

这是我的servlet

jsonObject.add("MessageInfo", jsonElement); out.print(jsonObject); 

这是我的javacript文件

 $.ajax({ type : "POST", url : "GetConversation", response : "json", data : "rideID="+rideID, // if received a response from the server success : function(data, textStatus, jqXHR) { console.log("success"); console.log(data.MessageInfo); $.each(data.MessageInfo, function(index, value) { console.log("Data Found"); var eachrow = "
" +"
" +value.messageBody +"
" +"
"; $('.messageContainer').prepend(eachrow); }); }, // If there was no resonse from the server error : function(jqXHR, textStatus, errorThrown) { // alert("Something really bad happened " + textStatus); } });

我正在向我的servlet发送一个AJAX请求并接收响应,但是当我使用$ .each循环将其解析到我的jsp页面时,我收到此错误。

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

这是响应的屏幕截图。

在此处输入图像描述

这是怎么造成的,如何解决?

您使用错误的选项$.ajax它没有response选项。 但是你应该用dataType: "json"替换它dataType: "json" 。 在使用此选项之前,Jquery不会将字符串转换为JSON对象。

dataType (default: Intelligent Guess (xml, json, script, or html))
类型: String
您期望从服务器返回的数据类型。 如果没有指定,jQuery将尝试根据响应的MIME类型推断它(XML MIME类型将产生XML,在1.4 JSON中将产生一个JavaScript对象,在1.4脚本中将执行脚本, 其他任何东西将是以字符串forms返回 )。