我是Select2的新手,并且无法集成AJAX.当我搜索时,结果不会根据查询进行过滤.
以下是它的外观:http://i.imgur.com/dAPSSDH.png - 结果中有正确的字符加下划线,但没有任何内容被过滤掉.在我的非ajax Select2和我见过的例子中,过滤似乎有点自动发生,所以我对编写自定义过滤器犹豫不决,因为可能已经内置了更好的过滤器.
这是我的代码:
<script>
$("#search_bar").select2({
placeholder: "Search for another Concept",
minimumInputLength: 1,
ajax: { // instead of writing the function to execute the request we use Select2's convenient helper
url: "/concepts/names_for_search",
dataType: 'json',
data: function (term, page) {
return {
q: term, // search term
page: page
};
},
results: function (data, page) {
return { results: data};
}
},
});
</script>
Run Code Online (Sandbox Code Playgroud)
另外,这是我的JSON的一个例子:
[{"id":1,"text":"Limits"},{"id":2,"text":"Derivatives"},{"id":3,"text":"One-Sided Limits"},{"id":4,"text":"Formal Definition of a limit"}]
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?希望我只是做一些愚蠢的事情,这是一个快速解决方案.在此先感谢您的帮助.
dar*_*ets 10
您需要在服务器端编写自定义筛选器以筛选结果.您在框中键入的内容将保存在"term"中,然后将"q"作为请求参数与ajax调用一起发送.所以对
url 的ajax调用:"/ concepts/names_for_search?q = deri"
应该只返回过滤结果而不是所有结果.
每次在搜索框中输入时,Update Select2都会进行AJAX调用.您必须在服务器端过滤结果,然后根据搜索框中的文本返回结果.
我在我的JSP/Servlet应用程序中使用它,如下所示
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
String searchTerm = request.getParameter("q");
String json = getOptions(searchTerm);
//getOptions method will return a string of in JSON format
//[{"id":"1","name":"Derivatives"}]
response.getWriter().write(json);
}
Run Code Online (Sandbox Code Playgroud)
您的JavaScript代码是正确的.
我发现这里使用的是Select2 .如果您打开链接http://www.indiewebseries.com/search?q=ind和http://www.indiewebseries.com/search?q=in获得的结果是不同的并且基于'q'参数.
在你的情况下,调用url'/ concepts/names_for_search?q = d'和'/ concepts/names_for_search?q = deri'的结果是相同的(即未过滤)