在ajax spring mvc中返回ModelAndView

Mon*_*lan 5 java ajax jquery spring

嗨我正在使用spring mvc + ajax.我通过传递用户ID进行了ajax调用.一切顺利成功返回到ajax但是当我提醒响应时,它简单地显示了html页面代码.请帮我解决这个问题.我想我没有很好地编码我的ajax.请以正确的方式帮助我

控制器代码:

  public @ResponseBody ModelAndView abc(HttpServletRequest httpServletRequest,
        HttpSession session, ModelMap map){

      ModelAndView modelAndView = new ModelAndView("abcd.page",
                "commandName", object);
           return modelAndView;
Run Code Online (Sandbox Code Playgroud)

Ajax代码:

     $(".userDetails").click(function() {
            alert("clicked");
        var userId=$(this).parent().parent(). parent().find(".userId"). 
                       text().trim();
            alert("userId :"+userId);
            $.ajax({

            url : 'ABC.htm',
            type : 'GET',
            data: {userId:userId},
            beforeSend: function(xhr) {  
                xhr.setRequestHeader("Accept", "application/json");  
                xhr.setRequestHeader("Content-Type", "application/json");  
            },  
            success : function(response) {
                alert("success");
                alert(response);
            },
            error : function(res) {
                alert("error");
            },

        });

            return false;
        });
Run Code Online (Sandbox Code Playgroud)

警报的输出(响应); 是 在此输入图像描述

编辑:任何人都可以告诉为什么ajax给成功的HTML内容...经过多次变化后我得到了同样的警报.

再次编辑:我认为我在控制器中没有任何问题.请建议我正确编码我的ajax的解决方案.这里好像错了.如何在ajax中获取ModelAndView对象

Sot*_*lis 10

你没有ModelAndView在AJAX中获得一个对象.Spring使用HandlerMethodReturnValueHandler实例来处理处理程序方法的返回值.因为ModelAndView,它使用ModelAndViewResolverMethodReturnValueHandler.因为@ResponseBody,它使用RequestResponseBodyMethodProcessor.这些按特定顺序检查,并且ModelAndView具有更高优先级.因此,当您返回a时ModelAndView,Spring会将模型属性添加到full Model,然后将您的视图名称解析为a,jsp并从中编写响应jsp,并为您提供一些HTML.由于AJAX只看到请求的响应,它将看到HTML.

如果要返回JSON,请不要返回a ModelAndView,直接返回模型对象或直接将JSON写入响应.