Ajax 作为对象列表的ResponseBody-500(内部服务器错误)
我试图从ajax请求中获取对象列表,并获取内部服务器错误。它早上还在工作,但现在不行了。 Ajax请求:Ajax 作为对象列表的ResponseBody-500(内部服务器错误),ajax,json,Ajax,Json,我试图从ajax请求中获取对象列表,并获取内部服务器错误。它早上还在工作,但现在不行了。 Ajax请求: $.ajax({ type : 'get', url : 'http://localhost:8080/FootballManager/draft/' + leaguename + '/players', dataType : "json", data : { "leaguename" : leaguename
$.ajax({
type : 'get',
url : 'http://localhost:8080/FootballManager/draft/' + leaguename
+ '/players',
dataType : "json",
data : {
"leaguename" : leaguename
},
contentType : "application/json",
cache : false,
success : function(data) {
drawTable(data);
},
error : function(XmlHttpRequest, textStatus, errorThrown) {
alert("error= " + errorThrown);
}
});
Spring mvc控制器:
@RequestMapping(value = "{leaguename}/players", method = RequestMethod.GET,headers = "Accept=application/json")
public @ResponseBody
List<Players> getPlayers(@RequestParam("leaguename") String leaguename,HttpSession session) {
try {
//list of players
return players;
} catch (Exception e) {
LOG.log(Level.SEVERE, "Exception: ", e);
return null;
}
}
@RequestMapping(value=“{leaguename}/players”,method=RequestMethod.GET,headers=“Accept=application/json”)
公共@ResponseBody
列出GetPlayer(@RequestParam(“leaguename”)字符串leaguename,HttpSession会话){
试一试{
//球员名单
返回球员;
}捕获(例外e){
LOG.LOG(严重级别,“异常:”,e);
返回null;
}
}
UPD。奇怪的是,它适用于其他对象列表,也奇怪的是,如果我手动创建所有对象(如new Player()),并使用setter设置相同的字段,并将所有对象添加到列表中,它会起作用,但如果我通过hibernate从DB获得这些对象,我就解决了这个错误。将fetchType更改为Eager解决了此问题。Eager不是解决方案。这是解决缺点的办法。我认为,您的问题是,您的集合没有加载,并且在事务之外,您(或您的序列化程序)没有访问db的权限。解决方案之一是使用DTO将数据传输到客户端并读取其中的数据。它也被认为是一种解决方法,但实际上,在客户端,您通常会有专门的、受限的视图进行消费。实际错误是什么?:)500不是一个错误解释,它只是意味着服务器抛出了一个错误。因此,打开chrome开发工具,启用ajax日志记录,重新加载页面,查找500错误,单击它,单击查看结果,然后读取实际的服务器错误是什么。500(内部服务器错误)这一切都在ajax日志记录中:(这是您的服务器,那么当您在debug中运行它时会发生什么异常。