Select2.js v4.0:如何将过滤器文本传输到ajax源数据?

时间:2015-07-20 21:36:23

标签: javascript ajax asp.net-mvc jquery-select2 jquery-select2-4

我在版本4.0中使用非常令人兴奋的库select2.js

我可以显示动态ajax数据的下拉列表,但dropdown2产生的增强下拉列表允许用户输入过滤器文本,我想将此文本作为参数过滤到服务器方法,以过滤由ajax返回的数据。

我正在尝试使用asp mvc项目

javascript代码:

$(".example-select2").select2({
    ajax: {
        dataType: 'json',
         url: '@Url.Action("GetSrcMethode", "GetCheckSet")',
       processResults: function (data) 
       {
             return {results: JSON.parse(data)};
       } 
      //what I am looking for
      //javascript code for sending search as parameter            
    }
});

我的C#方法是

public JsonResult GetSrcMethode(string searchTerme //!!!always null!!!)
    {            
        //...
        // get data and filter it from searchTerme
        //...
        Object json = JsonConvert.SerializeObject(filteredData);
        return Json(json, JsonRequestBehavior.AllowGet);
    }

searchTerme变量中接收的参数始终为null。

您知道如何将参数下拉列表的搜索文本传输到服务器方法吗?

1 个答案:

答案 0 :(得分:2)

默认情况下,Select2会将搜索字词作为q查询参数发送。因此,为AJAX请求生成的url是/url/?q=search+terms。在您的情况下,您应该能够将方法的参数更改为名为q,然后您可以在过滤时将其用作传入的搜索词。

public JsonResult GetSrcMethode(string q)
    {            
        //...
        // get data and filter it from q
        //...
        Object json = JsonConvert.SerializeObject(filteredData);
        return Json(json, JsonRequestBehavior.AllowGet);
    }

或者,您可以更改ajax.data选项(转换为查询参数)以返回具有与您要查找的参数匹配的键的对象。