如何通过ajax从spring控制器获取数据?

时间:2014-11-07 05:59:21

标签: jquery ajax spring jsp spring-mvc

我在ajax页面上有jsp,它通过网址/check调用弹簧控制器。

$.ajax({
    type : "GET",
    url : "${pageContext.request.contextPath}/check",
    data : {
    "id" : ${articleCount}
    },
    success: function(data){
    //response from controller
    }
});

现在,控制器看起来像,

@RequestMapping("/check")
public String check(@RequestParam Integer id, HttpServletRequest request,
        HttpServletResponse response, Model model) {
    boolean a = getSomeResult();
    if (a == true) {
        model.addAttribute("alreadySaved", true);
        return view;
    } else
        model.addAttribute("alreadySaved", false);

    return view;
}

我使用模型发送数据并尝试在success: function(data)中以"${alreadySaved}"的形式访问它,但它显示为空白。

我有什么方法可以在视图页面上收到true/false数据吗?

4 个答案:

答案 0 :(得分:9)

您必须为spring ajax调用示例添加@ResponseBody注释

@RequestMapping("/check")     
@ResponseBody
public String check(@RequestParam Integer id, HttpServletRequest request, HttpServletResponse response, Model model) {
    boolean a = getSomeResult();
    if (a == true) {
        model.addAttribute("alreadySaved", true);
        return view;
    } else {
        model.addAttribute("alreadySaved", false);
        return view;
    }
}

答案 1 :(得分:1)

当您尝试从ajax请求返回值时,应使用@ResponseBody注释。由于您的方法返回类型为String,请确保将字符串值而不是视图返回给jsp。

因为它会再次呈现jsp响应

@ResponseBody
public String check(@RequestParam Integer id, HttpServletRequest request, HttpServletResponse response, Model model) {
    boolean a = getSomeResult();
    if (a == true) {
        return "already saved";
    } 
    return "error exist";
}

在你的jsp中,

success: function(data){
    alert(data);
}

答案 2 :(得分:1)

使用null

当您添加@ResponseBody注释时,Spring会将返回值绑定到传出的HTTP响应正文。

@ResponseBody

Spring将使用HTTP消息转换器将返回值转换为HTTP响应主体[将对象序列化为响应主体],基于请求HTTP标头中使用的Content-Type。

了解更多信息:

http://websystique.com/springmvc/spring-mvc-requestbody-responsebody-example/

答案 3 :(得分:0)

控制器部分

您必须为spring ajax调用示例添加@ResponseBody注释

查看零件

$.ajax({
    type : "GET",
    url : "${pageContext.request.contextPath}/check",
    data : {
        "id" : ${articleCount}
    },
    success: function(data){
        $('#input_field').val(data);
    }
});
相关问题