1

在文本字段发生变化时,jQuery 会调用 Spring Controller。我的问题是这个查询如何发送@RequestParam到控制器方法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 ??)
4

1 回答 1

7

如果您将函数传递给 Autocomplete 的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) {
    ...
}
于 2013-04-21T21:57:04.800 回答