您正在使用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;
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;
});
警报的输出(响应);是
编辑:任何人都可以告诉为什么ajax会在成功时给出html内容...经过多次更改后我得到了同样的提醒。
再次编辑:我认为我在控制器中没有任何问题。请建议我正确编码我的ajax的解决方案。这里好像错了。如何在ajax中获取ModelAndView对象
答案 0 :(得分:10)
您在AJAX中没有获得ModelAndView
对象。 Spring使用HandlerMethodReturnValueHandler
实例来处理处理程序方法的返回值。对于ModelAndView
,它使用ModelAndViewResolverMethodReturnValueHandler
。对于@ResponseBody
,它使用RequestResponseBodyMethodProcessor
。这些按特定顺序检查,ModelAndView
的优先级更高。因此,当您返回ModelAndView
时,Spring会将模型属性添加到完整的Model
,然后将您的视图名称解析为jsp
并写入jsp
的响应。 1}},给你一些HTML。由于AJAX只看到请求的响应,它将看到HTML。
如果要返回JSON,请不要返回ModelAndView
,直接返回模型对象或直接将JSON写入响应。