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

jav*_*ude 1 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"
        });

    });
Run Code Online (Sandbox Code Playgroud)

这有效

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

但需要类似的东西

    @RequestMapping(value = "/find", method = RequestMethod.GET)
    public @ResponseBody
    List<String> findItem(@RequestParam("term") String id, Additional param here ??)
Run Code Online (Sandbox Code Playgroud)

kry*_*ger 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);
            }
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

现在自动完成请求将包含两个参数: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) {
    ...
}
Run Code Online (Sandbox Code Playgroud)