我试图向我的控制器发送一个AJAX调用,其代码显示如下。现在我面临的问题是,即使我能够在控制器中检索数据并随后处理它,它也不会通过AJAX调用返回到jsp页面。
@SuppressWarnings("unchecked")
@RequestMapping(value="/movie", method=RequestMethod.GET)
public @ResponseBody Person search(HttpServletRequest request, HttpServletResponse response) throws IOException{
String name = request.getParameter("uname1");
System.out.println(name);
List<Person> movie = personDAO.search(name);
Person per = new Person();
for (java.util.Iterator<Person> iterator = movie.iterator(); iterator.hasNext();){
per = iterator.next();
}
System.out.print(per + " Wtf");
return per;
}
这是我的AJAX电话:
$.ajax({
url: 'movie.html',
dataType: "json",
type: "GET",
contentType: 'application/json',
mimeType: 'application/json',
data: 'uname1=' + $('#element0').val(),
success: function(data){
$('#col1').text(data.name);
$('#col2').text(data.pname);
$('#col3').text(data.wname);
$('#col4').text(data.lname);
},
error: function(xhr, status, error) {
$('#col1').text("Undefined");
$('#col2').text("Undefined");
$('#col3').text("Undefined");
$('#col4').text("Undefined");
}
});
下面是输出的屏幕截图: Eclipse Output
答案 0 :(得分:1)
而不是返回一个Object。您应该返回一个带有','分隔符的字符串并将其拆分以在视图中获得所需的输出。
根据mozilla documentation,ResponseText可以是字符串或xml。您传递的对象可能是一个问题。
这是一个link来获取逗号分隔的String并在视图中使用它
答案 1 :(得分:1)
所以,问题在于我的网址映射。在我的问题编辑之前,我的代码有一些注释部分,它们解析Person对象并将其元素插入到JSON对象中。问题是我用于我的AJAX调用的URL有一个.html扩展名,而Spring实际上使用URL中的扩展名来决定返回什么类型的内容,如下所述:
@ResponseBody not working with spring 4.2.4 - not a duplicate I have checked all others
所以通过修改我的web.xml中的URL模式,如下所示:
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.html</url-pattern>
<url-pattern>*.json</url-pattern>
</servlet-mapping>
随后将我的AJAX调用中的网址更改为电影。 JSON :
$.ajax({
url: 'movie.json',
dataType: "json",
type: "GET",
contentType: 'application/json',
mimeType: 'application/json',
data: 'uname1=' + $('#element0').val(),
success: function(data){
$('#col1').text(data.name);
$('#col2').text(data.pname);
$('#col3').text(data.wname);
$('#col4').text(data.lname);
},
error: function() {
$('#col1').text("Undefined");
$('#col2').text("Undefined");
$('#col3').text("Undefined");
$('#col4').text("Undefined");
}
});
我能够达到预期的效果。