这是我的第一篇文章。对不起我的英语......
我遇到postJSON问题,并使用ModelAndView返回部分视图。
我的控制器:
@RequestMapping(method=RequestMethod.POST, value = "/addUrl.html")
public @ResponseBody ModelAndView addSubMenu(@RequestBody Menu menu) {
ModelAndView mav = new ModelAndView(PathConfig.MENU_DIR + "show_url");
int id = menuService.saveOrUpdateMenu(1, menu.getTitle(), menu.getUrl(), 4, "pl");
mav.addObject("submenu", menuService.get(id));
return mav;
}
我的ajax代码:
$("#menuUrl").submit(function(){
var menu = $(this).serializeObject();
$.ajax({
type: "POST",
url: config.resourcePath+"/addUrl.html",
data: JSON.stringify(menu),
dataType: 'json',
contentType: "application/json; charset=utf-8",
success: function(response){
$( "#site" ).append(response);
},
error: function(e){
alert("Server did not response.");
}
});
});
但是......我有错误:服务器没有响应...
如何用json渲染局部视图?
感谢。
答案 0 :(得分:0)
这里有一些可能出错的地方:
通过指定Content-type
application/json
标题,你期待json的回复,但是看看你处理响应的方式,看起来你想要的是一个html
如果是您要查找的html作为回复,请从请求中删除Content-Type标头,从@ResponseBody
响应中删除ModelAndView
注释,而只是返回指向一个普通的jsp,可以创建你期待的html响应..
@RequestMapping(method=RequestMethod.POST, value = "/addUrl.html")
public ModelAndView addSubMenu(@RequestBody Menu menu) {
...
}
答案 1 :(得分:0)
如果你想要的是json更新页面的某些部分不返回ModelAndView,返回String,确保有一个json序列化器
@RequestMapping(method=RequestMethod.POST, value = "/addUrl.html")
public @ResponseBody String addSubMenu() {
//yourvariable
return yourvariable.toString();
}
答案 2 :(得分:0)
$("#menuUrl").submit(function(){
var obj = $(this).serializeObject();
obj.parentId = getParentId(menuDivId);
$.ajax({
url: config.resourcePath+"/addUrl.html",
data : JSON.stringify(obj),
contentType : 'application/json',
type : 'POST',
context: document.body,
}).done(function(response) {
$("#site").append(response);
});
return false;
});
控制器返回ModelAndView。 它正在发挥作用。