1

这是我的第一篇文章。对不起我的英语...

我对 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 渲染部分视图?

谢谢。

4

3 回答 3

0

这里有几件事可能是错误的:

通过指定您的Content-type标头,application/json您期望得到 json 的响应,但是看看您处理响应的方式,看起来您想要的是 html

如果您正在寻找 html 作为响应,则从请求中删除 Content-Type 标头,@ResponseBody从 response 中删除注释ModelAndView,而不是只返回一个指向普通 jsp 的视图,该 jsp 可以创建您期望的 html 响应..

@RequestMapping(method=RequestMethod.POST, value = "/addUrl.html")
public ModelAndView addSubMenu(@RequestBody Menu menu) {
...
}
于 2012-12-11T01:47:26.573 回答
0

如果你想要的是 json 来更新页面的某些部分,不返回 ModelAndView,返回 String,确保有一个 json 序列化器

    @RequestMapping(method=RequestMethod.POST, value = "/addUrl.html")
    public @ResponseBody String addSubMenu() {
         //yourvariable
         return yourvariable.toString();
    }
于 2012-12-11T04:34:08.287 回答
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。它正在工作。

于 2012-12-11T11:06:50.507 回答