使用额外的参数调用Spring Controller进行jQuery调用

时间:2013-04-21 20:59:46

标签: ajax jquery spring-mvc jquery-autocomplete

在文本字段中进行更改时,jQuery会调用Spring Controller。我的问题是此查询如何将@RequestParam发送到Controller方法controller/find

如何在此通话中发送额外的Param

    $(document).ready(function() {
        $( "#id" ).autocomplete({
            source: "${pageContext. request. contextPath}/controller/find.htm"
        });

    });

这有效

    @RequestMapping(value = "/find", method = RequestMethod.GET)
    public @ResponseBody
    List<String> findItem(@RequestParam("term") String id)

但需要像

这样的东西
    @RequestMapping(value = "/find", method = RequestMethod.GET)
    public @ResponseBody
    List<String> findItem(@RequestParam("term") String id, Additional param here ??)

1 个答案:

答案 0 :(得分:7)

如果您将一个函数传递给自动完成的source选项(而不仅仅是指定URL的字符串),您可以定义自己的数据结构以发送到服务器:

$('#id').autocomplete({
    source: function (request, response) {
        $.ajax({
            url: './controller/find.htm',
            data: {
                term: request.term,
                extraParam: 'foo'
            },
            success: function (data) {
                console.log('response=', data);
            }
        });
    }
});

现在,自动填充请求将包含两个参数:termextraParam(jsFiddle:http://jsfiddle.net/gtBUt/,打开浏览器的“网络流量”标签,查看已发送的内容。

然后控制器可以像这样处理这个输入:

@RequestMapping(value = "/find", method = RequestMethod.GET)
@ResponseBody
public List<String> findItem(@RequestParam("term") String term,
                             @RequestParam("extraParam") String extraParam) {
    ...
}