ajax调用MVC Spring Controller,Not Found错误

时间:2014-02-22 18:55:43

标签: ajax spring-mvc

我有一个MVC Spring控制器。我在页面加载时将其称为ajax。

$.ajax({
            type:       "get",
            url:        'custom/Service',
            data:       "note1=" + "11",
            dataType:   "json",
            async:   false,
            success:    function() {
                        alert("1");
            },
            error:function (xhr, ajaxOptions, thrownError){
                if(xhr.status == 200 && xhr.statusText == 'parsererror'){
                    window.location.reload();
                } else {
                    alert(xhr.status+","+xhr.statusText);
                    alert(thrownError);
                }
            }    
        });

我的控制器是:

@RequestMapping("/custom")
public class CustomController {

    @RequestMapping(value="/Service", method=RequestMethod.GET)
        public String Service(
                @RequestParam("note1") String note1,
                HttpServletRequest request, HttpServletResponse response, Locale locale,
                Model model) {
            String result = custom.Service(note1, request, response);
        System.out.println("result: " + result);
        return result;
    }
}

在控制台的控制台中输出正确。但我得到“Not Found”错误。这是开发人员工具错误:GET“MySite / custom / Service?note1 = 11”404(Not Found)。有什么问题?

2 个答案:

答案 0 :(得分:1)

更改您的代码,如下所示:

@RequestMapping(value="/Service", method=RequestMethod.GET)
        public @ResponseBody String Service(
                @RequestParam("note1") String note1,
                HttpServletRequest request, HttpServletResponse response, Locale locale,
                Model model) {
            String result = custom.Service(note1, request, response);
        return result;
    }

您可以在ajax成功函数中访问结果。

success:    function(result) {
                        alert(result);
            },

答案 1 :(得分:0)

您需要在返回参数

中添加响应正文注释
 public @ReponseBody String Service(

弹簧控制器不必返回视图,它可以使用reposnsebody注释返回数据。您的原始代码将根据您的视图解析器设置将结果变量作为jsp查找。